GERAR SEMANA

LUCIANORW 01/09/2009 15:15:31
#321578
Boa tarde!!!
Estou precisando gerar as semanas de um determinado período, exemplo:
01/01/2009 a 31/01/2009
Semana-01=01/01/2009 a 03/01/2009
Semana-02=04/01/2009 a 10/01/2009
Semana-03=11/01/2009 a 17/01/2009
Semana-04=18/01/2009 a 24/01/2009
Semana-05=25/01/2009 a 31/01/2009
Usando o código abaixo, to quase lá (acho), só que não está gerando a última semana, por exemplo, do período de 01/03/2009 a 31/03/2009.


Sub gera_semana()
Dim v_sabado As Date, v_domingo As Date
ii = 0
CurrentDb.Execute [Ô]DELETE tbl_outros_parametros_semana.* FROM tbl_outros_parametros_semana;[Ô]
For i = 1 To Me.dias_mes
If i = 1 Then
v_sabado = Me.data_ini
v_domingo = v_sabado
Else
v_sabado = DateAdd([Ô]d[Ô], i - 1, Me.data_ini)
If Weekday(v_sabado) = 1 Then v_domingo = v_sabado
End If

If Weekday(v_sabado) = 7 Then
ii = ii + 1
Set tbl = CurrentDb.OpenRecordset([Ô]tbl_outros_parametros_semana[Ô])
With tbl
.AddNew
!num_semana = ii
!data_ini = v_domingo
!data_fin = v_sabado
.Update
End With
tbl.Close
Set tbl = Nothing
CurrentDb.Close
End If
Next i
Me.tbl_outros_parametros_semana_subform.Requery
End Sub


Poderiam me dar uma dica de como proceder?
Att
Luciano
MARCELO.TREZE 01/09/2009 15:23:44
#321580
luciano não estou entendo muito o código só explique o seguinte a semana é de seg a sab. é isto
LUCIANORW 01/09/2009 15:31:58
#321582
Ola Marcelo,
Não, a semana que preciso é como no calendário, começa no primeiro dia do mes, até o primeiro sábado, depois começa no domingo e vai até o próximo sábado, até atingir o último dia do mês.
Luciano
MARCELO.TREZE 01/09/2009 15:37:25
#321583
entendi

só um segundo deixa eu analizar seu código
LUCIANORW 01/09/2009 17:01:39
#321595
Marcelo,
Seria o código abaixo?
Att
Luciano


Sub gera_semana()
Dim v_sabado As Date, v_domingo As Date
ii = 0
CurrentDb.Execute [Ô]DELETE tbl_outros_parametros_semana.* FROM tbl_outros_parametros_semana;[Ô]
For i = 1 To Me.dias_mes
If i = 1 Then
v_sabado = Me.data_ini
v_domingo = v_sabado
Else
v_sabado = DateAdd([Ô]d[Ô], i - 1, Me.data_ini)
If Weekday(v_sabado) = 1 Then v_domingo = v_sabado
End If

If v_sabado = Me.data_fin Then [ô]/// se for o ultimo dia do mês
ii = ii + 1
Set tbl = CurrentDb.OpenRecordset([Ô]tbl_outros_parametros_semana[Ô])
With tbl
.AddNew
!num_semana = ii
!data_ini = v_domingo
!data_fin = v_sabado
.Update
End With
tbl.Close
Set tbl = Nothing
CurrentDb.Close
ElseIf Weekday(v_sabado) = 7 Then
ii = ii + 1
Set tbl = CurrentDb.OpenRecordset([Ô]tbl_outros_parametros_semana[Ô])
With tbl
.AddNew
!num_semana = ii
!data_ini = v_domingo
!data_fin = v_sabado
.Update
End With
tbl.Close
Set tbl = Nothing
CurrentDb.Close
End If
Next i
Me.tbl_outros_parametros_semana_subform.Requery
End Sub
ASHKATCHUP 01/09/2009 17:37:29
#321604
Resposta escolhida
Acho que isso pode lhe ajudar.
ASHKATCHUP 01/09/2009 17:41:26
#321606
Não consegui anexar o arquivo quando fui editar. Não sei pq, mas ele diz [Ô]formato inválido[Ô]....
THIAGO.CC 01/09/2009 17:51:13
#321609
LUCIANORW,

Não sei se entendi o que vc quer mas se vc usar esta função jogando uma data como parametro, ele traz a semana que vc deseja.

Exemplo:

Dia_Semana = DatePart([Ô]ww[Ô], [Ô]30/01/2009[Ô])

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