PDA

View Full Version : Access (Campo Contatore)


sal_rob
19-04-2005, 08:14
Ciao stò facendo un programma che allo start preleva il valore di un campo contatore gli aggiunge 1, e l'utente utilizza questo valore come codice.

Vorrei sapere se in Access c'è un istruzione (tipo DBCC Checkident in SQL server ) che restituisce il reale progressivo del contatore.

Di seguito faccio un esempio del problema che devo risolvere:

Contatore
1
2
3 <-- Cancello quest'ultimo record

Allo start la query con Max(Contatore) restituisce 2, anche se in realtà il prossimo record inserito sarà 4 e non 3,quindi il codice che fornisco all'utente è 2+1 e non 3+1 come dovrebbe essere.

akyra
19-04-2005, 11:32
1°) se usi un campo di tipo contatore questo sarà automaticamente progressivo, a prescindere dai tuoi calcoli. Ti consiglio quindi di usare un intero che dovrai inserire, calcolandolo tramite apposite funzioni, di volta in volta che aggiungi un nuovo record

2°) se non fai uno storico dei record che cancelli come puoi calcolare il numero che dovrà avere il nuovo record? Nell'esempio da te riportato, se cancello il record 3, come farà il programma a sapere in un secondo momento che dopo il record 2 una volta c'era anche un record 3, ed assegnare dunque al nuovo record il valore 4?

sal_rob
19-04-2005, 11:52
1°) se usi un campo di tipo contatore questo sarà automaticamente progressivo, a prescindere dai tuoi calcoli. Ti consiglio quindi di usare un intero che dovrai inserire, calcolandolo tramite apposite funzioni, di volta in volta che aggiungi un nuovo record

2°) se non fai uno storico dei record che cancelli come puoi calcolare il numero che dovrà avere il nuovo record? Nell'esempio da te riportato, se cancello il record 3, come farà il programma a sapere in un secondo momento che dopo il record 2 una volta c'era anche un record 3, ed assegnare dunque al nuovo record il valore 4?

Per questo ho aperto la discussione, per sapere se esiste una funzione in Access che corrisponde a DBCC CheckIdent NORESEET di SQL che appunto restituisce il valore corrente REALE del contatore, nel mio esempio 3.

sal_rob
20-04-2005, 13:19
Nessuno può aiutarmi?

Minelab
20-04-2005, 17:44
Utilizzare la funzione DMax () +1 non va bene? In questo modo conteresti i record che effettivamente hai o che soddisfano le tue esigenze.

sal_rob
21-04-2005, 08:38
Utilizzare la funzione DMax () +1 non va bene? In questo modo conteresti i record che effettivamente hai o che soddisfano le tue esigenze.


Ciao, grazie per la risposta, ma purtroppo DMax non và bene, perchè se io cancello l'ultimo record(nel mio esempio 3) DMax + 1 mi restituisce 2 + 1 = 3, mentre il record che inserirò avrà come valore del campo contatore 4 , in quanto Access ha memoria che l'ultimo record inserito aveva il contatore = 3 e nonostante questo sia stato cancellato il nuovo record avrà comunque come valore del contatore il progressivo di 3 cioè 4.

Minelab
21-04-2005, 21:26
Quello che intendo io è: sostituisci il campo contatore con uno numerico e costruisciti il tuo contatore ad hoc con DMax

sal_rob
22-04-2005, 07:12
Quello che intendo io è: sostituisci il campo contatore con uno numerico e costruisciti il tuo contatore ad hoc con DMax

In effetti questa è una alternativa nel caso nessuno mi possa aiutare nel mantenere il campo contatore.

Ciao e grazie.

:) :)