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

NUMERO PROGRESSIVO PER ANNO RILEVATO DA FORM

318 views
Skip to first unread message

Giorgia

unread,
Feb 1, 2011, 4:36:54 AM2/1/11
to
Buongiorno a tutti,
ho cercato un po' tra i vari post ma ho trovato come creare un numero
progressivo per anno (mi serve per protocollare fatture) e come estrarre
l'anno da una data (year(date)).
Non riesco per� ad unire le 2 cose e soprattutto ad estrarre l'anno dalla
form [AVVIO DATA] che ha
- il solo campo [DATA] che ha maschera di input 00/00/0000;0;_ e valore
predef a now()

Nella formattazione dell'ultima parte del campo seguente mi trovo quindi in
difficolt� nell'indicare l'anno:
=Format("A") & Format("/") &
Format([DETTAGLI_FATTURE_ACQUISTO_PROTOCOLLO];"0000") & Format("/") &
Format(Right(Year(Now());2))

Sempre che secondo voi, trovando questa soluzione, io riesca a soddisfare la
mia esigenza di avere il campo "PROTOCOLLO" che si incrementi in base
all'anno, ovvero:
nella form [AVVIO DATA] inserisco 01/02/2011
il protocollo della fattura registrata sar� 0025/11, quella dopo
0026/11.....
se invece nella form [AVVIO DATA] inserisco 31/12/2010, il protocollo della
fattura registrata dovrebbe seguire l'incremento dell'anno 2010 e quindi
avere 0285/10, 0286/10....etc...

Io ho provato con right(year(form![AVVIO DATA]![DATA]);2) ma nulla.... dove
sbaglio?

Grazie.
Giorgia


pablitomf

unread,
Feb 1, 2011, 6:05:04 AM2/1/11
to

Te l'avro' spiegato 2'433'455'544'322 volte :D
Per cui incremento e con questa siamo a 2'433'455'544'323....
se questi dati 0285/10, 0286/10, ecc... sono in una tabella, puoi fare
una query in cui separi i campi:
Cmp1 = int(left(TuoCampo;4))
Cmp2 = int(right(TuoCampo;2))

li raggruppi e per il Cmp1 metti MAX

In questo modo avrai per ogni anno il numero massimo di documento
registrato...
a questo punto per ogni inserimento potrai andarti a leggere a volo
questa query da recordset filtrandola per anno e recuperare il numero
massimo registrato... a sto punto verra' da se che il numero da
registrare nuovo sara' quello recuperato + 1...

chiaro? ;)

Giorgia

unread,
Feb 1, 2011, 6:47:20 AM2/1/11
to

"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:b5349daa-dbf6-445a...@m7g2000vbq.googlegroups.com...

Ehy ciao Prof! ;-)
uhm...posso dire "chiarino"?
nel senso che l'anno dove e come lo recupero? pensavo dalla form [AVVIO
DATA]....ma non riesco....

Giorgia


MA

unread,
Feb 1, 2011, 9:34:33 AM2/1/11
to
?"Giorgia" ha scritto nel messaggio news:ii8rs6$lih$1...@speranza.aioe.org...

Giorgia

___
Ciao Giorgia, non usare now ma data fattura, altrimenti se ad inizio anno
scrive le ultime dell'anno precedente, ti scatta il contatore..
inoltre no nha molto senso Format("A") & Format("/") , format ti permette di
appunto formattare cioč mostrare una data o un numero in un certo modo
FORMAT(1,"000") esce "001"
Format(date, "ggg g.mmm.aaaa") esce mar "01.feb.2011"
nel tuo caso basta ="A/"
MA

pablitomf

unread,
Feb 2, 2011, 6:10:05 AM2/2/11
to
On 1 Feb, 12:47, "Giorgia" <tabatin...@yahoo.it> wrote:
> "pablitomf" <pablit...@virgilio.it> ha scritto nel messaggionews:b5349daa-dbf6-445a...@m7g2000vbq.googlegroups.com...

no... non lo puoi dire, ma se togli "H" ed "I", ti do il permesso di
dirlo :D

> nel senso che l'anno dove e come lo recupero? pensavo dalla form [AVVIO
> DATA]....ma non riesco....

ma come da dove lo recuperi?...
Se hai un Form di inserimento, avrai anche il campo in cui indichi
l'anno della registrazione del documento no? mi pare ovvio... e allora
è da lì che lo prendi... poi con il metodo che ti ho indicato fai cio'
che ti serve

ho capito male?

> Giorgia

Giorgia

unread,
Feb 9, 2011, 11:44:47 AM2/9/11
to
> > Te l'avro' spiegato 2'433'455'544'322 volte :D
> > Per cui incremento e con questa siamo a 2'433'455'544'323....
> > se questi dati 0285/10, 0286/10, ecc... sono in una tabella, puoi fare
> > una query in cui separi i campi:
> > Cmp1 = int(left(TuoCampo;4))
> > Cmp2 = int(right(TuoCampo;2))
>
> > li raggruppi e per il Cmp1 metti MAX
>
> > In questo modo avrai per ogni anno il numero massimo di documento
> > registrato...
> > a questo punto per ogni inserimento potrai andarti a leggere a volo
> > questa query da recordset filtrandola per anno e recuperare il numero
> > massimo registrato... a sto punto verra' da se che il numero da
> > registrare nuovo sara' quello recuperato + 1...
>
> > chiaro? ;)
>
> Ehy ciao Prof! ;-)
> uhm...posso dire "chiarino"?

no... non lo puoi dire, ma se togli "H" ed "I", ti do il permesso di
dirlo :D

> nel senso che l'anno dove e come lo recupero? pensavo dalla form [AVVIO
> DATA]....ma non riesco....

ma come da dove lo recuperi?...
Se hai un Form di inserimento, avrai anche il campo in cui indichi
l'anno della registrazione del documento no? mi pare ovvio... e allora

� da l� che lo prendi... poi con il metodo che ti ho indicato fai cio'
che ti serve

ho capito male?

> Giorgia


Figurati se hai capito male prof!! sono io che sono una chiavica!!

Query creata, ma dato che per avere un unico scadenzario avevo creato un
campo con valore predef.


=Format("A") & Format("/") &
Format([DETTAGLI_FATTURE_ACQUISTO_PROTOCOLLO];"0000") & Format("/") &
Format(Right(Year(Now());2))

(nella form di inserimento delle fatture di vendita avr�
=Format("V")......etc....)

come mi devo comportare? Elimino i valori predefiniti dai campi delle form e
uso il recordset?
a proposito......un aiutino per la stringa del recordset?:-))

Ma poi � la soluzione migliore? In fondo, un campo non numerico mi crea dei
problemi per le relazioni.....e infatti avevo anche il campo PROTOCOLLO con
valore predefinito =Nz(DMax("[PROTOCOLLO]";"[FATTURE ACQUISTO]");0)+1
(idem per FATTURE VENDITE)....

Giorgia


pablitomf

unread,
Feb 10, 2011, 3:08:48 AM2/10/11
to

...a parte il fatto che fai un po' un uso ad capocchiam del
"Format" :D

se proprio devi, si scrive cosi' :
="A/" & Format([DETTAGLI_FATTURE_ACQUISTO_PROTOCOLLO];"0000") & "/" &
Format(Now();"yy")

io userei recordset come ti dicevo :
Aiutino :

Dim db As Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM TuaTabella Where TuoiCampi =
Qualcosa")

ecc...

PS la soluzione miglioere e' quella che piu' facilmente risolve il
problema.


Giorgia

unread,
Feb 14, 2011, 3:22:11 AM2/14/11
to
> io userei recordset come ti dicevo :
> Aiutino :
>
> Dim db As Database
> Dim rs As DAO.Recordset
>
> Set db = CurrentDb
> Set rs = db.OpenRecordset("SELECT * FROM TuaTabella Where TuoiCampi =
> Qualcosa")
>
> ecc...
>
> PS la soluzione miglioere e' quella che piu' facilmente risolve il
> problema.
>
ARIPERDONAMI ma.....come collego il discorso del recordset alla query che ho
creato?
Mi riferisco a quando mi hai scritto:

" In questo modo avrai per ogni anno il numero massimo di documento
registrato...
a questo punto per ogni inserimento potrai andarti a leggere a volo
questa query da recordset filtrandola per anno e recuperare il numero
massimo registrato... a sto punto verra' da se che il numero da
registrare nuovo sara' quello recuperato + 1..."

Giorgia


pablitomf

unread,
Feb 14, 2011, 8:10:30 AM2/14/11
to
On 14 Feb, 09:22, "Giorgia" <tabatin...@yahoo.it> wrote:
> > io userei recordset come ti dicevo :
> > Aiutino :
>
> > Dim db As Database
> > Dim rs As DAO.Recordset
>
> > Set db =  CurrentDb
> > Set rs = db.OpenRecordset("SELECT * FROM TuaTabella Where TuoiCampi =
> > Qualcosa")
>
> > ecc...
>
> > PS la soluzione miglioere e' quella che piu' facilmente risolve il
> > problema.
>
> ARIPERDONAMI ma.....come collego il discorso del recordset alla query che ho
> creato?

se ti crei quella query, potrai usare il Dlookup("TuoCampo";"TuaQuery")
+1

Giorgia

unread,
Feb 15, 2011, 6:49:23 AM2/15/11
to

"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:c4caf970-129a-45ea...@4g2000yqo.googlegroups.com...

Allora, ci dovrei quasi essere....
Il mio problema ora č: la query č questa

SELECT Max(Int(Left([PROTOCOLLO],4))) AS NUMERO, Int(Right([REGISTRAZIONE
IVA],2)) AS ANNO
FROM [FATTURE VENDITA]
GROUP BY Int(Right([REGISTRAZIONE IVA],2));

ma io la data REGISTRAZIONE IVA la inserisco in un secondo momento, quando
registro la fattura e piů precisamente

Private Sub DATA_FATTURA_BeforeUpdate(Cancel As Integer)
If IsNull([REGISTRAZIONE IVA]) Then
[REGISTRAZIONE IVA] = [DATA FATTURA]
End If
End Sub

ed effettuando il seguente controllo

Private Sub REGISTRAZIONE_IVA_LostFocus()
If Month([REGISTRAZIONE IVA]) <> Month(Forms![AVVIO DATA]!DATA) Or
Year([REGISTRAZIONE IVA]) <> Year(Forms![AVVIO DATA]!DATA) Then MsgBox "Data
fuori periodo IVA"
End Sub

L'unica cosa che potrebbe far funzionare correttamente l'incremento del
protocollo, sarebbe quella (a mio modestissimo avviso), di fare riferimento
alla DATA della maschera AVVIO DATA che č una maschera non associata che si
apre all'avvio del db e che si puň controllare da un pulsante presente sulla
form NUOVA FATTURA VENDITA.

Ho provato a indicare

Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acForm, Me.Name, acNewRec
Me.REGISTRAZIONE_IVA = Form![AVVIO DATA]![DATA]
Me.PROTOCOLLO = DLookup("[NUMERO]", "[QueryPROTOCOLLOVENDITE]") + 1
End Sub

ma la form AVVIO DATA non viene riconosciuta...che problema ci puň essere?

Grazie.
Giorgia


Giorgia

unread,
Feb 15, 2011, 7:01:47 AM2/15/11
to

"Giorgia" <tabat...@yahoo.it> ha scritto nel messaggio
news:ijdp7u$km7$1...@speranza.aioe.org...
Davvero una demente!
la sintassi giusta era forms! e non form!

scusate l'intasamento.

Giorgia


Giorgia

unread,
Feb 15, 2011, 7:14:18 AM2/15/11
to

"Giorgia" <tabat...@yahoo.it> ha scritto nel messaggio
news:ijdpv5$n63$1...@speranza.aioe.org...
il problema non riesco comunque a risolverlo, anche con la sintassi
corretta, la stringa a volte funziona e a volte no (non capisco da cosa
dipenda) e comunque il PROTOCOLLO non viene aggiornato in base all'anno
inserito nella DATA di avvio.....

Giorgia


pablitomf

unread,
Feb 15, 2011, 12:25:51 PM2/15/11
to
On 15 Feb, 13:14, "Giorgia" <tabatin...@yahoo.it> wrote:
> "Giorgia" <tabatin...@yahoo.it> ha scritto nel messaggionews:ijdpv5$n63$1...@speranza.aioe.org...
>
>
>
> > "Giorgia" <tabatin...@yahoo.it> ha scritto nel messaggio
> >news:ijdp7u$km7$1...@speranza.aioe.org...
>
> >> "pablitomf" <pablit...@virgilio.it> ha scritto nel messaggio

> >>news:c4caf970-129a-45ea...@4g2000yqo.googlegroups.com...
> >> On 14 Feb, 09:22, "Giorgia" <tabatin...@yahoo.it> wrote:
> >>> > io userei recordset come ti dicevo :
> >>> > Aiutino :
>
> >>> > Dim db As Database
> >>> > Dim rs As DAO.Recordset
>
> >>> > Set db = CurrentDb
> >>> > Set rs = db.OpenRecordset("SELECT * FROM TuaTabella Where TuoiCampi =
> >>> > Qualcosa")
>
> >>> > ecc...
>
> >>> > PS la soluzione miglioere e' quella che piu' facilmente risolve il
> >>> > problema.
>
> >>> ARIPERDONAMI ma.....come collego il discorso del recordset alla query
> >>> che ho
> >>> creato?
>
> >> se ti crei quella query, potrai usare il Dlookup("TuoCampo";"TuaQuery")
> >> +1
>
> >> Allora, ci dovrei quasi essere....
> >> Il mio problema ora è: la query è questa

>
> >> SELECT Max(Int(Left([PROTOCOLLO],4))) AS NUMERO, Int(Right([REGISTRAZIONE
> >> IVA],2)) AS ANNO
> >> FROM [FATTURE VENDITA]
> >> GROUP BY Int(Right([REGISTRAZIONE IVA],2));
>
> >> ma io la data REGISTRAZIONE IVA la inserisco in un secondo momento,
> >> quando registro la fattura e più precisamente

>
> >> Private Sub DATA_FATTURA_BeforeUpdate(Cancel As Integer)
> >> If IsNull([REGISTRAZIONE IVA]) Then
> >> [REGISTRAZIONE IVA] = [DATA FATTURA]
> >> End If
> >> End Sub
>
> >> ed effettuando il seguente controllo
>
> >> Private Sub REGISTRAZIONE_IVA_LostFocus()
> >> If Month([REGISTRAZIONE IVA]) <> Month(Forms![AVVIO DATA]!DATA) Or
> >> Year([REGISTRAZIONE IVA]) <> Year(Forms![AVVIO DATA]!DATA) Then MsgBox
> >> "Data fuori periodo IVA"
> >> End Sub
>
> >> L'unica cosa che potrebbe far funzionare correttamente l'incremento del
> >> protocollo, sarebbe quella (a mio modestissimo avviso), di fare
> >> riferimento alla DATA della maschera AVVIO DATA che è una maschera non
> >> associata che si apre all'avvio del db e che si può controllare da un

> >> pulsante presente sulla form NUOVA FATTURA VENDITA.
>
> >> Ho provato a indicare
>
> >> Private Sub Form_Open(Cancel As Integer)
> >> DoCmd.GoToRecord acForm, Me.Name, acNewRec
> >> Me.REGISTRAZIONE_IVA = Form![AVVIO DATA]![DATA]
> >> Me.PROTOCOLLO = DLookup("[NUMERO]", "[QueryPROTOCOLLOVENDITE]") + 1
> >> End Sub
>
> >> ma la form AVVIO DATA non viene riconosciuta...che problema ci può

> >> essere?
>
> >> Grazie.
> >> Giorgia
>
> > Davvero una demente!
> > la sintassi giusta era forms! e non form!
>
> > scusate l'intasamento.
>
> > Giorgia
>
> il problema non riesco comunque a risolverlo, anche con la sintassi
> corretta, la stringa a volte funziona e a volte no (non capisco da cosa
> dipenda) e comunque il PROTOCOLLO non viene aggiornato in base all'anno
> inserito nella DATA di avvio.....
>
> Giorgia

Guardati il mio demo "FATTURE" su Accessgroup... in quell'esempio c'e'
il numero incrementale rispetto alla data...
;)

Giorgia

unread,
Feb 17, 2011, 5:43:28 AM2/17/11
to
>
> il problema non riesco comunque a risolverlo, anche con la sintassi
> corretta, la stringa a volte funziona e a volte no (non capisco da cosa
> dipenda) e comunque il PROTOCOLLO non viene aggiornato in base all'anno
> inserito nella DATA di avvio.....
>
> Giorgia

Guardati il mio demo "FATTURE" su Accessgroup... in quell'esempio c'e'
il numero incrementale rispetto alla data...
;)

L'ho guardato e ti ringrazio, ma la tua struttura mi sembra troppo diversa
dalla mia e non vorrei pasticciare ulteriormente nel stravolgere tutto.
Ci dovrei quasi essere, ma non mi funziona un piccolo tassello.
Dunque,
form NUOVA_FATTURA_VENDITA
cmp PROTOCOLLO =DLookUp("[NUMERO]";"[QueryPROTOCOLLOVENDITE]")+1

cmp REGISTRAZIONE_IVA=[Maschere]![AVVIO DATA]![DATA]

e la query in questione nel dettaglio �
SELECT Max(((Int(Left([PROTOCOLLO],4))))) AS NUMERO,

Int(Right([REGISTRAZIONE IVA],2)) AS ANNO
FROM [FATTURE VENDITA]
GROUP BY Int(Right([REGISTRAZIONE IVA],2));

mi controllo la data di REGISTRAZIONE_IVA tramite la form pop up AVVIO DATA,
che si apre su Apertura della form NUOVA_FATTURA_VENDITA
ed � qui che sorgono i problemi:
1- se vario la data, il cmp REGISTRAZIONE_IVA non viene aggiornato anche se
ho provato a indicare un requery su chiusura della pop up
2- attualmente, non ho dati inseriti per l'anno 2010, ma se faccio una
prova, variando la data REGISTRAZIONE_IVA, il cmp PROTOCOLLO continua a
seguire la numerazione dell'anno 2011, anche se nella query di cui sopra �
evidente che per l'anno 2010 non ci siano record

Sbaglio sicuramente, qualcuno inorridir� sicuramente....ma potreste
aiutarmi?
Grazie


pablitomf

unread,
Feb 17, 2011, 7:49:21 AM2/17/11
to

Riepiloghiamo, altrimenti facciamo solo casino :
1) Tabella (Es. tbl_FATTURE) in cui hai tra l'altro "cmp_DATA" e
"cmp_Numero" (i nomi li ho inventati)
2) Sulla tabella tbl_FATTURE, crei una qry_NUM_MAX_ANNO del tipo :

SELECT Max(tbl_FATTURE.cmp_NUMERO) AS NUMERO, Year([cmp_DATA]) AS ANNO
FROM tbl_FATTURE
GROUP BY Year([cmp_DATA]);

In questo modo avrai a livello DB sempre a disposizione per ogni
singolo anno, il numero massimo raggiunto in archivio.

3) All'inserimento del nuovo documento, metterai una data (*), e
andrai ad interrogare la query filtrata sulla data (*) che hai
inserito. Per farlo ti basterà un semplice
nz(dlookup("NUMERO";"qry_NUM_MAX_ANNO";"ANNO=" & TuoCampoData);0)

Es. Crea una maschera (Maschera1)
Inserisci 2 campi
cmp_1
cmp_2

Su "aggiorna" di cmp_1 metti questo codice
me.cmp_2 = Nz(DLookup("NUMERO", "qry_NUM_MAX_ANNO", "ANNO='" &
Me.cmp_1 & "'")) + 1

ora metti l'anno in cmp_1 e premi invio... vedrai che lui andra' a
leggere i valori relativi al NUMERO massimo relativamente all'anno
indicato e ti aggiungera' 1, ovvero ti dara' il numero del nuovo
documento...

piu' di cosi' non riesco a spiegartelo.

Giorgia

unread,
Feb 18, 2011, 4:17:26 AM2/18/11
to

Riepiloghiamo, altrimenti facciamo solo casino :
1) Tabella (Es. tbl_FATTURE) in cui hai tra l'altro "cmp_DATA" e
"cmp_Numero" (i nomi li ho inventati)
2) Sulla tabella tbl_FATTURE, crei una qry_NUM_MAX_ANNO del tipo :

SELECT Max(tbl_FATTURE.cmp_NUMERO) AS NUMERO, Year([cmp_DATA]) AS ANNO
FROM tbl_FATTURE
GROUP BY Year([cmp_DATA]);

In questo modo avrai a livello DB sempre a disposizione per ogni
singolo anno, il numero massimo raggiunto in archivio.

3) All'inserimento del nuovo documento, metterai una data (*), e
andrai ad interrogare la query filtrata sulla data (*) che hai

inserito. Per farlo ti basterŕ un semplice


nz(dlookup("NUMERO";"qry_NUM_MAX_ANNO";"ANNO=" & TuoCampoData);0)

Es. Crea una maschera (Maschera1)
Inserisci 2 campi
cmp_1
cmp_2

Su "aggiorna" di cmp_1 metti questo codice
me.cmp_2 = Nz(DLookup("NUMERO", "qry_NUM_MAX_ANNO", "ANNO='" &
Me.cmp_1 & "'")) + 1

ora metti l'anno in cmp_1 e premi invio... vedrai che lui andra' a
leggere i valori relativi al NUMERO massimo relativamente all'anno
indicato e ti aggiungera' 1, ovvero ti dara' il numero del nuovo
documento...

piu' di cosi' non riesco a spiegartelo.

Tu sei un ottimo prof nulla da dire, sono io che sicuramente vado in panne
in fretta...

la query era ok, il dlookup era da rivedere ma ora l'ho impostato cosě senza
ottenere l'aggiornamento sperato sul PROTOCOLLO.....

Private Sub REGISTRAZIONE_IVA_AfterUpdate()
Me.PROTOCOLLO = Nz(DLookup("PROTOCOLLO", "QueryPROTOCOLLOVENDITE", "ANNO='"
& Year(Me.REGISTRAZIONE_IVA & "'"))) + 1
End Sub

mi sono permessa di modificare con Year, perchč mi sembra che debba
prelevare l'anno dalla data REGISTRAZIONE_IVA....
che ne pensi?

Giorgia


pablitomf

unread,
Feb 18, 2011, 6:37:40 AM2/18/11
to
On 18 Feb, 10:17, "Giorgia" <tabatin...@yahoo.it> wrote:
> Riepiloghiamo, altrimenti facciamo solo casino :
> 1) Tabella (Es. tbl_FATTURE) in cui hai tra l'altro "cmp_DATA" e
> "cmp_Numero" (i nomi li ho inventati)
> 2) Sulla tabella tbl_FATTURE, crei una qry_NUM_MAX_ANNO del tipo :
>
> SELECT Max(tbl_FATTURE.cmp_NUMERO) AS NUMERO, Year([cmp_DATA]) AS ANNO
> FROM tbl_FATTURE
> GROUP BY Year([cmp_DATA]);
>
> In questo modo avrai a livello DB sempre a disposizione per ogni
> singolo anno, il numero massimo raggiunto in archivio.
>
> 3) All'inserimento del nuovo documento, metterai una data (*), e
> andrai ad interrogare la query filtrata sulla data (*) che hai
> inserito. Per farlo ti basterà un semplice

> nz(dlookup("NUMERO";"qry_NUM_MAX_ANNO";"ANNO=" & TuoCampoData);0)
>
> Es. Crea una maschera (Maschera1)
> Inserisci 2 campi
> cmp_1
> cmp_2
>
> Su "aggiorna" di cmp_1 metti questo codice
> me.cmp_2 = Nz(DLookup("NUMERO", "qry_NUM_MAX_ANNO", "ANNO='" &
> Me.cmp_1 & "'")) + 1
>
> ora metti l'anno in cmp_1 e premi invio... vedrai che lui andra' a
> leggere i valori relativi al NUMERO massimo relativamente all'anno
> indicato e ti aggiungera' 1, ovvero ti dara' il numero del nuovo
> documento...
>
> piu' di cosi' non riesco a spiegartelo.
>
> Tu sei un ottimo prof nulla da dire, sono io che sicuramente vado in panne
> in fretta...

hai provato ad implementare l'esempio che ti ho scritto?... se lo fai,
vedrai che capirai molte cose dell'argomento.

> la query era ok, il dlookup era da rivedere ma ora l'ho impostato così senza


> ottenere l'aggiornamento  sperato sul PROTOCOLLO.....
>
> Private Sub REGISTRAZIONE_IVA_AfterUpdate()
> Me.PROTOCOLLO = Nz(DLookup("PROTOCOLLO", "QueryPROTOCOLLOVENDITE", "ANNO='"
> & Year(Me.REGISTRAZIONE_IVA & "'"))) + 1
> End Sub

ma in Me.REGISTRAZIONE_IVA che c'è?...
a livello tabella che dati supporta e dentro cosa ci registri?

e soprattutto, PROTOCOLLO che scaturisce da QueryPROTOCOLLOVENDITE che
ci trovi registrato dentro?

(se è numerico all'apertura della query il contenuto è allineato a
sinistra, se è testo a destra)

> mi sono permessa di modificare con Year, perchè mi sembra che debba


> prelevare l'anno dalla data REGISTRAZIONE_IVA....
> che ne pensi?

dipende da cosa mi dici delle cose che ti ho chiesto su.

Giorgia

unread,
Feb 18, 2011, 10:25:06 AM2/18/11
to

"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:6b947a8c-55e7-4939...@k22g2000yqh.googlegroups.com...

On 18 Feb, 10:17, "Giorgia" <tabatin...@yahoo.it> wrote:
> Riepiloghiamo, altrimenti facciamo solo casino :
> 1) Tabella (Es. tbl_FATTURE) in cui hai tra l'altro "cmp_DATA" e
> "cmp_Numero" (i nomi li ho inventati)
> 2) Sulla tabella tbl_FATTURE, crei una qry_NUM_MAX_ANNO del tipo :
>
> SELECT Max(tbl_FATTURE.cmp_NUMERO) AS NUMERO, Year([cmp_DATA]) AS ANNO
> FROM tbl_FATTURE
> GROUP BY Year([cmp_DATA]);
>
> In questo modo avrai a livello DB sempre a disposizione per ogni
> singolo anno, il numero massimo raggiunto in archivio.
>
> 3) All'inserimento del nuovo documento, metterai una data (*), e
> andrai ad interrogare la query filtrata sulla data (*) che hai
> inserito. Per farlo ti basterŕ un semplice

> nz(dlookup("NUMERO";"qry_NUM_MAX_ANNO";"ANNO=" & TuoCampoData);0)
>
> Es. Crea una maschera (Maschera1)
> Inserisci 2 campi
> cmp_1
> cmp_2
>
> Su "aggiorna" di cmp_1 metti questo codice
> me.cmp_2 = Nz(DLookup("NUMERO", "qry_NUM_MAX_ANNO", "ANNO='" &
> Me.cmp_1 & "'")) + 1
>
> ora metti l'anno in cmp_1 e premi invio... vedrai che lui andra' a
> leggere i valori relativi al NUMERO massimo relativamente all'anno
> indicato e ti aggiungera' 1, ovvero ti dara' il numero del nuovo
> documento...
>
> piu' di cosi' non riesco a spiegartelo.
>
> Tu sei un ottimo prof nulla da dire, sono io che sicuramente vado in panne
> in fretta...

hai provato ad implementare l'esempio che ti ho scritto?... se lo fai,
vedrai che capirai molte cose dell'argomento.

> la query era ok, il dlookup era da rivedere ma ora l'ho impostato cosě

> senza
> ottenere l'aggiornamento sperato sul PROTOCOLLO.....
>
> Private Sub REGISTRAZIONE_IVA_AfterUpdate()
> Me.PROTOCOLLO = Nz(DLookup("PROTOCOLLO", "QueryPROTOCOLLOVENDITE",
> "ANNO='"
> & Year(Me.REGISTRAZIONE_IVA & "'"))) + 1
> End Sub

ma in Me.REGISTRAZIONE_IVA che c'č?...


a livello tabella che dati supporta e dentro cosa ci registri?

c'č la data che dovrebbe fare da riferimento per sapere se la fattura sta
per essere registrata in ritardo e infatti effetto questo controllo

Private Sub REGISTRAZIONE_IVA_LostFocus()
If Month([REGISTRAZIONE IVA]) <> Month(Forms![AVVIO DATA]!DATA) Or
Year([REGISTRAZIONE IVA]) <> Year(Forms![AVVIO DATA]!DATA) Then MsgBox "Data
fuori periodo IVA"
End Sub

e soprattutto, PROTOCOLLO che scaturisce da QueryPROTOCOLLOVENDITE che
ci trovi registrato dentro?

(se č numerico all'apertura della query il contenuto č allineato a
sinistra, se č testo a destra)

io nella tabella l'ho impostato come numerico ma nella query č allineato a
dx....io sono certa che sia un campo numerico


> mi sono permessa di modificare con Year, perchč mi sembra che debba

pablitomf

unread,
Feb 18, 2011, 10:47:00 AM2/18/11
to

> (se numerico  all'apertura della query il contenuto allineato a
> sinistra, se testo a destra)
>
> io nella tabella l'ho impostato come numerico ma nella query allineato a

> dx....io sono certa che sia un campo numerico

si scusa, ho invertito io... e' corretto, destra = num, sinistra = txt

se apri la query che hai preparato, ti fa vedere per ogni anno il
numero max documento raggiunto?

Giorgia

unread,
Feb 18, 2011, 11:01:38 AM2/18/11
to

"pablitomf" <pabl...@virgilio.it> ha scritto nel messaggio
news:1a94fc21-719e-4bff...@o20g2000yqk.googlegroups.com...

Sì la query funziona perfettamente, nella maschera il protocollo rimane
sempre a 0


pablitomf

unread,
Feb 18, 2011, 11:42:40 AM2/18/11
to
On 18 Feb, 17:01, "Giorgia" <tabatin...@yahoo.it> wrote:
> "pablitomf" <pablit...@virgilio.it> ha scritto nel messaggionews:1a94fc21-719e-4bff...@o20g2000yqk.googlegroups.com...

>
> > (se numerico all'apertura della query il contenuto allineato a
> > sinistra, se testo a destra)
>
> > io nella tabella l'ho impostato come numerico ma nella query allineato a
> > dx....io sono certa che sia un campo numerico
>
> si scusa, ho invertito io... e' corretto, destra = num, sinistra = txt
>
> se apri la query che hai preparato, ti fa vedere per ogni anno il
> numero max documento raggiunto?
>
> S la query funziona perfettamente, nella maschera il protocollo rimane
> sempre a 0

inviami sto cavolo di DB epurato di cio' che non mi serve... mo' devo
capire! :D

0 new messages