COMO COMPLETAR AS DATAS?

JOERBETH 10/11/2009 10:04:13
#327301
Bom dia

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
LLAIA 10/11/2009 10:26:49
#327307
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.
JOERBETH 10/11/2009 11:51:25
#327317
Hum, entendi mais ou menos, so não esse lance do ultimo lançamento?

Valeu
MARCELO.TREZE 10/11/2009 11:58:44
#327318
Resposta escolhida
só uma pergunta pra que vc deseja colocar estes dias de sabado e domingo na tabela?

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.

JOERBETH 10/11/2009 12:08:45
#327319
tem que colocar essas datas , pois, o cliente do meu cliente, está questionando a falta desses dias, como se eles estivessem ocultando propositalmente esses dias, essas questão de testar os dias tá tranquilo, eu faço com WeekdayName..


Ajudem ae

Falows

Joerbeth

EDERMIR 10/11/2009 12:27:27
#327320
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
JOERBETH 10/11/2009 12:32:25
#327321
Mais as datas, já estão gravadas na tabela...

Falows
EDERMIR 10/11/2009 14:02:07
#327332
Você disse que não tem as [Ô]datas em branco[Ô]. Assim é uma forma de impromi-las.
JOERBETH 10/11/2009 18:00:47
#327386
isso, assim, tem datas gravadas na tabela, e faltas essas dos sabados e domingos
EDERMIR 10/11/2009 21:13:41
#327402
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.
MARCELO.TREZE 10/11/2009 21:51:27
#327404
bom vamos para a pratica da coisa

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



Tópico encerrado , respostas não são mais permitidas