Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

calcolare la data partendo dal numero settimana

837 views
Skip to first unread message

Paolo

unread,
Dec 14, 2005, 5:15:27 AM12/14/05
to
esempio pratico: oggi è il 14/12/2005
se in una textbox digito 3 voglio che in un altra textbox ritorni il
16/01/2006 che è il primo gg della 3 settimana del 2006
se in una textbox digito 20 voglio che in un altra textbox ritorni il
15/05/2006 che è il primo gg della 20 settimana del 2006
cioe deve ritornare sempre una data futura in base al numero della settimana
indicata.

come posso impostare una routine del genere?
sto ragionando sul datepart ma sono inchiodato...

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Paolo


TANNHAUSER

unread,
Dec 14, 2005, 5:43:44 AM12/14/05
to
Paolo ha scritto:


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


Paolo

unread,
Dec 14, 2005, 5:55:41 AM12/14/05
to

> Sitocomune/General
> "6.109 Determinare il primo e l'ultimo giorno di ciascuna delle 52
> settimane di un anno"

Si, grazie, avevo già dato un occhiata, ma non riesco ad adattarla alla mia
situazione
oppure sono io che sono "de coccio"...

Paolo


Karl Donaubauer

unread,
Dec 14, 2005, 8:16:23 AM12/14/05
to

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)


TANNHAUSER

unread,
Dec 14, 2005, 8:36:23 AM12/14/05
to
Karl Donaubauer ha scritto:

> 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.

Karl Donaubauer

unread,
Dec 14, 2005, 8:43:52 AM12/14/05
to
TANNHAUSER wrote:
> Karl Donaubauer ha scritto:
>
>> www.donkarl.com/it FAQ 2.9 Il Lunedě di una data settimana
>
> 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.

Per me la mia funzione funziona. ;-)
Dimmi un esempio cosa e come hai fatto e ricevuto.

--
cu

TANNHAUSER

unread,
Dec 14, 2005, 8:54:11 AM12/14/05
to
Karl Donaubauer ha scritto:

> 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.

Paolo

unread,
Dec 14, 2005, 9:13:46 AM12/14/05
to
> Per me la mia funzione funziona. ;-)
> Dimmi un esempio cosa e come hai fatto e ricevuto.
>
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


Paolo

unread,
Dec 14, 2005, 9:27:09 AM12/14/05
to
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...


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
>
>


Karl Donaubauer

unread,
Dec 14, 2005, 9:29:00 AM12/14/05
to
TANNHAUSER wrote:
> Karl Donaubauer ha scritto:
>
>> 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 :-)

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.

TANNHAUSER

unread,
Dec 14, 2005, 10:12:54 AM12/14/05
to
Karl Donaubauer ha scritto:

> 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.

TANNHAUSER

unread,
Dec 14, 2005, 10:17:12 AM12/14/05
to
Paolo ha scritto:

> 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

unread,
Dec 14, 2005, 10:23:14 AM12/14/05
to
Si ok è proprio quello che sto provando ora, poi ti dico.

Paolo

Paolo

unread,
Dec 14, 2005, 10:31:40 AM12/14/05
to
Ok ragazzi, a posto, con un semplice controllo sulla settimana corrente
funzione.

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

0 new messages