come posso impostare una routine del genere?
sto ragionando sul datepart ma sono inchiodato...
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Paolo
Sitocomune/General
"6.109 Determinare il primo e l'ultimo giorno di ciascuna delle 52
settimane di un anno"
--
TANNHAUSER
"I've seen things you people wouldn't believe..."
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it
Si, grazie, avevo già dato un occhiata, ma non riesco ad adattarla alla mia
situazione
oppure sono io che sono "de coccio"...
Paolo
www.donkarl.com/it FAQ 2.9 Il Lunedì di una data settimana
--
HTH
Karl
*********
Access FAQ: www.donkarl.com/it
+ Conferenza Italiana per Sviluppatori di Access (CISA)
> www.donkarl.com/it FAQ 2.9 Il Lunedě di una data settimana
Ciao Karl,
ho testato sia il tuo metodo (che dovrebbe, a questo punto, risolvere il
quesito di Paolo), sia quello di Carlo nel Sitocomune/General/6.109. I due
metodi restituiscono il lunedi spostato esattamente di una settimana (in
meno per il metodo di Carlo): ovvio se nella Dlookup sposto il criterio in
avanti di uno, a quel punto il risultato č identico.
Grazie.
Per me la mia funzione funziona. ;-)
Dimmi un esempio cosa e come hai fatto e ricevuto.
--
cu
> Per me la mia funzione funziona. ;-)
> Dimmi un esempio cosa e come hai fatto e ricevuto.
Si, lo so che la tua funziona, l'ho provata prima di dirtelo :-)
Quella di Carlo del sitocomune si basa su di una tabella che va costruita
per prima dove ci sono tutte le date di inizio e fine settimana generate
usando il codice:
Public Sub DeterminaSettimane(DataIniziale As Date)
' in DataIniziale mettere il primo giorno dell'anno che si desidera
'nel formato "01/01/2003"
'esempio: DeterminaSettimane("01/01/2003")
Dim NuovaData As Date
Dim rcs As Recordset, i As Integer
Dim MioGiorno
MioGiorno = WeekDay(DataIniziale, vbMonday)
'questo perchč il primo giorno č il lunedě
'Ora accodo i valori solo per la prima settimana
Set rcs = CurrentDb.OpenRecordset("Settimane")
With rcs
.AddNew
!NSettimana = 1
!DataInizio = DataIniziale
!DataFine = DataIniziale + (7 - MioGiorno)
.Update
End With
NuovaData = DataIniziale + ((7 - MioGiorno) + 1)
'finalmente accodo gli altri valori
For i = 2 To 53
With rcs
.AddNew
!NSettimana = i
!DataInizio = NuovaData
!DataFine = NuovaData + 6
NuovaData = !DataFine
.Update
End With
NuovaData = NuovaData + 1
Next i
rcs.Close
End Sub
Passando poi il numero di settimana (ad esempio in un controllo di una
form) viene restituita la data dell'inizio della settimana e quella della
fine utilizzando le funzioni:
DLookUp("DataInizio","Settimane","NSettimana = 45")
DLookUp("DataFine","Settimane","NSettimana = 45")
Ti ripeto, si discosta dalla tua esattamente di una settimana.
Non vorrei passargli manualmente l'anno giusto (perchč cosě funziona)
come fare...???
Paolo
Per ribadire meglio il concetto, è che questa funzione dovrebbe ragionare
sempre al futuro
e cioè se digito 3 come settimana adesso che siamo alla settimana 50
la funzione dovrebbe capire che il 3 richiesto è per l'anno prossimo e non
l'anno corrente...
Paolo
> intanto grazie,
> Ho provato, e ci siamo quasi.
> Il problema è che settando 3 come settimana (ArgKW) e se recupero in
> automatico
> l'anno year(date) che torna attualmente 2005 non mi va bene
> perchè mi torna 17/01/2005
> mentre io vorrei che mi tornasse la ps. data futura e coiè 16/01/2006
>
> Non vorrei passargli manualmente l'anno giusto (perchè così funziona)
>
> come fare...???
>
> Paolo
>
>
Ed io non ho capito bene il tuo messaggio. Sai che il mio italiano
e circa come la virtů di leggere di ciroteo. ;-)
Il codice assume che il primo giorno di un anno sia nella prima
settimana dell'anno. Questo non č vero o diciamo solo per caso.
In quasi tutta l'Europa č in grado l'ISO standard 8601 dicendo che
la prima settimana dell'anno č questo che ha 4 giorni.
Se Carlo non legge il thread dobbiamo informarlo che c'č questo
problema nel suo metodo. Puo risolvere con verificare nel codice
se la sua NSettimana 1 ha 4 giorni e in caso di no deve prendere
la prossima come NSettimana 1 prima di accodare gli altri valori.
> Ed io non ho capito bene il tuo messaggio. Sai che il mio italiano
> e circa come la virtů di leggere di ciroteo. ;-)
Il tuo italiano va anche troppo bene se confrontato con il tedesco che so
io (cioč <0);-)
> Se Carlo non legge il thread dobbiamo informarlo che c'č questo
> problema nel suo metodo. Puo risolvere con verificare nel codice
> se la sua NSettimana 1 ha 4 giorni e in caso di no deve prendere
> la prossima come NSettimana 1 prima di accodare gli altri valori.
Se stai leggendo, Carlo, prendi nota.
> aggiungo per essere + chiaro che il problema si presenta oggi che siamo
> ancora nel 2005.
> Appena entriamo nel 2006 la funzione è ok.
> Per ribadire meglio il concetto, è che questa funzione dovrebbe ragionare
> sempre al futuro
> e cioè se digito 3 come settimana adesso che siamo alla settimana 50
> la funzione dovrebbe capire che il 3 richiesto è per l'anno prossimo e non
> l'anno corrente...
Perchè non implementi un bel IF..Then..Else dove con IF testi se il numero
che passi alla funzione per la settimana è > o < di quello della settimana
corrente dell'anno in corso e con Then ed Else passi alla funzione o
l'anno corrente, estratto con Year (Date) o Year(Date)+1.
Paolo
Grazie a tutti
paolo
"Paolo" <ppunto...@atpibergrouppunto.com> ha scritto nel messaggio
news:40arnaF...@individual.net...
> Si ok č proprio quello che sto provando ora, poi ti dico.
>
> Paolo
>
> > Perchč non implementi un bel IF..Then..Else dove con IF testi se il
numero
> > che passi alla funzione per la settimana č > o < di quello della