Discussione:
Primo giorno anno corrente, ultimo giorno anno precedente
(troppo vecchio per rispondere)
sandro
2005-01-13 23:01:03 UTC
Permalink
Ciao,
vi chiedo questo :

If DateDiff("yyyy", #12/31/2004#, #1/1/2005#) = 1 Then

E possibile ottenere dove scrivo #12/31/2004# l’ultimo giorno dell’anno
precedente all’attuale,
e dove dico #1/1/2005# il primo giorno dell’anno corretto, indipendentemente
da quale sia l’anno in corso.

Cioè se nella data di sistema l’anno è il 1974 devo ottenere questo

If DateDiff("yyyy", #12/31/1973#, #1/1/1974#) = 1 Then

Grazie.
Cinzia
2005-01-14 08:45:53 UTC
Permalink
Post by sandro
Ciao,
If DateDiff("yyyy", #12/31/2004#, #1/1/2005#) = 1 Then
E possibile ottenere dove scrivo #12/31/2004# l'ultimo giorno dell'anno
precedente all'attuale,
e dove dico #1/1/2005# il primo giorno dell'anno corretto,
indipendentemente
Post by sandro
da quale sia l'anno in corso.
Cioè se nella data di sistema l'anno è il 1974 devo ottenere questo
If DateDiff("yyyy", #12/31/1973#, #1/1/1974#) = 1 Then
Grazie.
Ciao Sandro,
ho l'impressione che hai fatto un po' di confusione!
o la data di sistema deve coincidere con l'anno corrente oppure non ho modo
di sapere la data corrente.
A parte il fatto che non ne capisco l'utilità! messa in questo modo quella
differenza sarà sempre 1!
Comunque l'ultimo giorno dell'anno scorso: "#12/31/" & (year(date) -1) &
"#"
Il primo giorno dell'anno in corso: "#01/01/" & year(date) & "#"
Se non era questo che intendevi spiega meglio!
Ciao
Cinzia
sandro
2005-01-14 12:47:02 UTC
Permalink
[cut]
Ciao Cinzia,

ctrl+alt+canc e riavvio il sistema.

Ho una tabella che contiene date e rispettivi numeri fattura di diversi anni.
Ovviamente all’inizio dell’anno la numerazione parte da 1.
Allora stavo cercando di fare prendere in sede di maschera la numerazione
della fatture in base all’anno in corso quando ne inserisco una nuova.
Ti spiego come :

Estraggo un recordset della mia tabella e assegno a due variabile gli ultimi
valori di numero e data in base all’anno corrente.
Se la differenza tra l’anno della data estratta dal mio recordset e quello
della data corrente è 1 allora sono nell’anno di “sistema” e il numero di
fattura successivo sarà il numero di fattura estratti dal mio recordset +1,
altrimenti sarà il valore massimo della fattura estratto con dmax sul dominio
t_fatture_carico+1.

In questo modo se cambio la data di sistema dovrei riuscire ad inserire una
data con una numerazione dell’anno precedente.

Questa era la mia idea, di seguito ti posto quanto finora fatto :
Dim dbs As Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("T_fatture_carico_unione", dbOpenTable)
While Not rst.EOF
If DatePart("yyyy", rst("data_fattura")) = DatePart("yyyy", Date) Then
numfatt = rst("numero_fattura")
soloanno = DatePart("yyyy", rst("data_fattura"))
End If
rst.MoveNext
Wend
If DateDiff("yyyy", "#12/31/" & soloanno, "#01/01/" & soloannno - 1) = 1 Then
numero_fattura = numfatt + 1
Else
numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[T_fatture_carico_unione]", "[tipo_contratto]=2") + 1
End If

Sono fermo qua :

If DateDiff("yyyy", "#12/31/" & soloanno, "#01/01/" & soloannno - 1) = 1 Then

Perchè non so come dirgli questa cosa.

Suppongo che non sia il modo più corretto di procedere, ma questo è quello
che ho pensato di fare.
Siccome questo problema sicuramente l’avrai già trattato se hai un’ altra
soluzione sai che la aspetto ben volentieri.

Ciao ti saluto, Sandro.
Roberto da casa
2005-01-14 13:28:42 UTC
Permalink
"sandro" <***@discussions.microsoft.com> ha scritto nel messaggio news:D9AF846B-DEE6-4873-99AA-***@microsoft.com...
[CUT]

Se il tuo problema è la gestione automatica del numero di fattura che ad
inizio anno deve ripartire da 1, vai sul Sito Comune (link qui sotto) e
nella Sezione General leggi la FAQ di Davide La Mantia (Sib) intitolata
"Numerazione crescente per fatture ed altro.".
--
Roberto

-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
sandro
2005-01-14 13:49:04 UTC
Permalink
Post by Roberto da casa
[CUT]
Se il tuo problema è la gestione automatica del numero di fattura che ad
inizio anno deve ripartire da 1, vai sul Sito Comune (link qui sotto) e
nella Sezione General leggi la FAQ di Davide La Mantia (Sib) intitolata
"Numerazione crescente per fatture ed altro.".
--
Roberto
Ciao Roberto,
grazie per la risposta.
Si, ieri sera l'ho vista.
Ma siccome ho la testa dura, volevo vedere se riuscivo a risolvere con
questa mia idea.
Se hai consigli in merito, oltre a questo, sono ben contento di accettarli.
Ciao.
Roberto da casa
2005-01-14 14:07:55 UTC
Permalink
Post by sandro
Post by Roberto da casa
[CUT]
Se il tuo problema è la gestione automatica del numero di fattura che ad
inizio anno deve ripartire da 1, vai sul Sito Comune (link qui sotto) e
nella Sezione General leggi la FAQ di Davide La Mantia (Sib) intitolata
"Numerazione crescente per fatture ed altro.".
--
Roberto
Ciao Roberto,
grazie per la risposta.
Si, ieri sera l'ho vista.
Ma siccome ho la testa dura, volevo vedere se riuscivo a risolvere con
questa mia idea.
Se hai consigli in merito, oltre a questo, sono ben contento di accettarli.
In aggiunta alla soluzione di Cinzia, per derminare l'ultimo giorno
dell'anno precedente e il primo giorno dell'anno in corso puoi usare la
funzione DateSerial (vedi help):

UltimoGiorno = DateSerial(Year(Date())-1, 12, 31)
PrimoGiorno = DateSerial(Year(Date()), 1, 1,)

Non saprei proprio che altro suggerirti.
--
Roberto

-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Post by sandro
Ciao.
Cinzia
2005-01-14 15:16:05 UTC
Permalink
Post by sandro
[cut]
Ciao Cinzia,
ctrl+alt+canc e riavvio il sistema.
Ho una tabella che contiene date e rispettivi numeri fattura di diversi anni.
Ovviamente all'inizio dell'anno la numerazione parte da 1.
Allora stavo cercando di fare prendere in sede di maschera la numerazione
della fatture in base all'anno in corso quando ne inserisco una nuova.
Estraggo un recordset della mia tabella e assegno a due variabile gli ultimi
valori di numero e data in base all'anno corrente.
Se la differenza tra l'anno della data estratta dal mio recordset e quello
della data corrente è 1 allora sono nell'anno di "sistema" e il numero di
fattura successivo sarà il numero di fattura estratti dal mio recordset +1,
altrimenti sarà il valore massimo della fattura estratto con dmax sul dominio
t_fatture_carico+1.
In questo modo se cambio la data di sistema dovrei riuscire ad inserire una
data con una numerazione dell'anno precedente.
Dim dbs As Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("T_fatture_carico_unione", dbOpenTable)
While Not rst.EOF
If DatePart("yyyy", rst("data_fattura")) = DatePart("yyyy", Date) Then
numfatt = rst("numero_fattura")
soloanno = DatePart("yyyy", rst("data_fattura"))
End If
rst.MoveNext
Wend
If DateDiff("yyyy", "#12/31/" & soloanno, "#01/01/" & soloannno - 1) = 1 Then
numero_fattura = numfatt + 1
Else
numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[T_fatture_carico_unione]", "[tipo_contratto]=2") + 1
End If
If DateDiff("yyyy", "#12/31/" & soloanno, "#01/01/" & soloannno - 1) = 1 Then
Perchè non so come dirgli questa cosa.
Suppongo che non sia il modo più corretto di procedere, ma questo è quello
che ho pensato di fare.
Siccome questo problema sicuramente l'avrai già trattato se hai un' altra
soluzione sai che la aspetto ben volentieri.
Ciao ti saluto, Sandro.
ciao Sandro,
allora, se ho ben capito vuoi gestire una situazione in cui il 5 gennaio
2005 devi emettere una fattura datata 31/12/2004.
La tua ipotesi è cambio la data di sistema e poi faccio tutto il
ragionamento di cui sopra.
Secondo me la soluzione più semplice è andare sempre a testare l'anno di
sitema nella DMAX

numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[T_fatture_carico_unione]", "[tipo_contratto]=2 AND Year([Data_fattura]) =
Year(date)") + 1

in questo modo se l'anno di sitema è il 2004 ti troverà l'ultima del 2004 se
è 2005 ti troverà l'ultima del 2005
(non ho verificato però se l'istruzione Year(data_fattura)= year(date) viene
digerita dal Dmax ??) se non la digerisse potresti fare una query su
T_Fatture_carico_unione che ti estrae solo il NumeroFattura, L'anno e e il
tipo contratto e poi applicare il Dmax sulla query anzichè sulla tabella...

Ciao
Cinzia
sandro
2005-01-14 16:35:04 UTC
Permalink
[cut]

Ciao Cinzia.
Post by Cinzia
ciao Sandro,
allora, se ho ben capito vuoi gestire una situazione in cui il 5 gennaio
2005 devi emettere una fattura datata 31/12/2004.
si, esatto.
Post by Cinzia
La tua ipotesi è cambio la data di sistema e poi faccio tutto il
ragionamento di cui sopra.
Secondo me la soluzione più semplice è andare sempre a testare l'anno di
sitema nella DMAX
numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[T_fatture_carico_unione]", "[tipo_contratto]=2 AND Year([Data_fattura]) =
Year(date)") + 1
in questo modo se l'anno di sitema è il 2004 ti troverà l'ultima del 2004 se
è 2005 ti troverà l'ultima del 2005
(non ho verificato però se l'istruzione Year(data_fattura)= year(date) viene
digerita dal Dmax ??)
Cinzia,
la year nella dmax è proprio indigesta.

Per questo:

se non la digerisse potresti fare una query suT_Fatture_carico_unione che
ti estrae solo il NumeroFattura, L'anno e e il
tipo contratto e poi applicare il Dmax sulla query anzichè sulla tabella...

L’unico modo che io conosco per l’estrazione dell’anno tramite la data è con
il recordset come visto nel post precedente.
Ho provato anche cosi

soloanno = Format(rst("data_fattura"), "yyyy") nel ciclo while….wend
al posto di datepart

e così’ nella dmax

numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[T_fatture_carico_unione]", "[tipo_contratto]=2 AND soloanno=year(date)") + 1

ma niente da fare.

Provo ora a creare un dmax by Sandro e se vediamo cosa comino.

Ciao.
Cinzia
2005-01-14 17:11:50 UTC
Permalink
Post by sandro
[cut]
Ciao Cinzia.
Post by Cinzia
ciao Sandro,
allora, se ho ben capito vuoi gestire una situazione in cui il 5 gennaio
2005 devi emettere una fattura datata 31/12/2004.
si, esatto.
Post by Cinzia
La tua ipotesi è cambio la data di sistema e poi faccio tutto il
ragionamento di cui sopra.
Secondo me la soluzione più semplice è andare sempre a testare l'anno di
sitema nella DMAX
numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[T_fatture_carico_unione]", "[tipo_contratto]=2 AND
Year([Data_fattura]) =
Post by sandro
Post by Cinzia
Year(date)") + 1
in questo modo se l'anno di sitema è il 2004 ti troverà l'ultima del 2004 se
è 2005 ti troverà l'ultima del 2005
(non ho verificato però se l'istruzione Year(data_fattura)= year(date) viene
digerita dal Dmax ??)
Cinzia,
la year nella dmax è proprio indigesta.
se non la digerisse potresti fare una query suT_Fatture_carico_unione che
ti estrae solo il NumeroFattura, L'anno e e il
tipo contratto e poi applicare il Dmax sulla query anzichè sulla tabella...
L'unico modo che io conosco per l'estrazione dell'anno tramite la data è
con
Post by sandro
il recordset come visto nel post precedente.
Ma no dai fai una query Q_fatture_carico_unione così:

Selct Numero_Fattura, Year([Data_Fattura]) as AnnoFattura, [Tipo_Contratto]
from T_fatture_carico_unione

e nella Dmax
numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[Q_fatture_carico_unione]", "[tipo_contratto]=2 AND [AnnoFattura]='" &
year(date) &"'" ) + 1
Post by sandro
Ho provato anche cosi
soloanno = Format(rst("data_fattura"), "yyyy") nel ciclo while..wend
al posto di datepart
e così' nella dmax
numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[T_fatture_carico_unione]", "[tipo_contratto]=2 AND soloanno=year(date)") + 1
ma niente da fare.
Provo ora a creare un dmax by Sandro e se vediamo cosa comino.
Ciao.
Cinzia
sandro
2005-01-14 17:43:05 UTC
Permalink
[cut]
Post by Cinzia
Selct Numero_Fattura, Year([Data_Fattura]) as AnnoFattura, [Tipo_Contratto]
from T_fatture_carico_unione
e nella Dmax
numero_fattura = DMax("Val(Nz([numero_fattura],'0'))",
"[Q_fatture_carico_unione]", "[tipo_contratto]=2 AND [AnnoFattura]='" &
year(date) &"'" ) + 1
[cut]

Cinzia : fenomenale, eccezionale, grandiosa.

Grazie ancora.

Loading...