COMO COMPLETAR AS DATAS?
A situação é a seguinte, tenho uma tabela com todos os funcionarios, e a outra com as marcações de ponto com as datas, acontece que , existem dias que não contam na tabela, esses dias são os dias de Sábado e Domingo praticamente, não sei se será necessário mexer com a tabela de Funcionarios, o modelo é esse:
Tablea [Ô]Funcinários[Ô]: CODIGO/NOME
Tabela [Ô]Marcacao[Ô]: DATA/CODIGO/NOME
Como eu faria para completar essas datas, em um determinado periodo de data?, tipo:
INICIAL: 01/09/2009
FINAL: 30/09/2009
Por exemplo,o funcionario 002 tem na tabela de marcação as datas: 01,02,03 e 04/09 sendo que, dia 05 que é sábdo não consta, quero colocar na tabela de MARCAÇÃO esse dia 05???
Falows
Joerbeth
Valeu
se é marcação de ponto e os funcionarios não trabalham sabado e domingo, praque estas datas na tabela?
só pra mim entender melhor o que deseja fazer.
Ajudem ae
Falows
Joerbeth
Citação:LLAIA escreveu:
cara, vc pode fazer o seguinte: antes de lançar na tabela marcação para um determinado funcionário, vc pega o último lançamento para tal. compare a diferença entre as datas dos dois lançamentos, se for maior que zero, faça um loop lançando a diferença e em seguida faça o lançamento atual.
Você verifica o dia atual da marcação e subtrai do dia anterior (préviamente armazenado). Se a diferênça entre estas datas é superior a 01 (um dia) então fltam marcações.
Crie um loop (FOR...NEXT) para incluir estes dias faltantes:
For Wx = Wdiaanterior + 1 to Wdia atual - 1
IMPRIME WX
Next Wx
Falows
Citação:EDERMIR escreveu:
LLAIA escreveu:
cara, vc pode fazer o seguinte: antes de lançar na tabela marcação para um determinado funcionário, vc pega o último lançamento para tal. compare a diferença entre as datas dos dois lançamentos, se for maior que zero, faça um loop lançando a diferença e em seguida faça o lançamento atual.
Você verifica o dia atual da marcação e subtrai do dia anterior (préviamente armazenado). Se a diferênça entre estas datas é superior a 01 (um dia) então fltam marcações.
Crie um loop (FOR...NEXT) para incluir estes dias faltantes:For Wx = Wdiaanterior + 1 to Wdia atual - 1
IMPRIME WX
Next Wx
[Ô]INTÃO NÊGO!!![Ô] Tenta a solução do LLAIA com meu código.
primeiro você terá de preencher as lacunas
então poderá fazer o seguinte, o codigo a seguir é um POG que desenvolvi, talvez alguem surja com algo mais simples
mas até então, pode usa-lo
Dim DataINI As Date
Dim DataFIM As Date
Dim Codigo As Integer
Dim Nome As String
DataINI = [Ô]01/09/2009[Ô]
DataFIM = [Ô]30/09/2009[Ô]
Codigo = 1234
Nome = [Ô]marcelo[Ô]
Do While Not DataINI > DataFIM
[ô]abaixo a sql irá verificar se a data existe no banco de dados
Sql = [Ô]SELECT * FROM marcacao WHERE data = #[Ô] & Format(DataINI, [Ô]mm/dd/yyyy[Ô]) & [Ô]# AND codigo = [Ô] & Codigo
Set RS = CNN.Execute(Sql)
[ô] se não existir a data em questão será incluida
If (RS.EOF And RS.BOF) Then
CNN.Execute ([Ô]INSERT INTO marcacao (Data,Codigo,Nome) Values (#[Ô] & Format(DataINI, [Ô]mm/dd/yyyy[Ô]) & [Ô]#,[Ô] & Codigo & [Ô],[ô][Ô] & Nome & [Ô][ô])[Ô])
End If
DataINI = DateAdd([Ô]d[Ô], 1, DataINI) [ô]ira acrescentar dia a dia até chegar a data fim
Loop
bom com o POG acima, lógico adaptado ao seu modo, apenas seguindo a lógica, vc conseguirá preencher as lacunas
pra poder a partir de agora e colocar esas datas use o datediff para verificar as lacunas, mas esta é uma outra estoria.
tente primeiro o código acima