View Full Version : Access (Campo Contatore)
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.
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?
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.
Utilizzare la funzione DMax () +1 non va bene? In questo modo conteresti i record che effettivamente hai o che soddisfano le tue esigenze.
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.
Quello che intendo io è: sostituisci il campo contatore con uno numerico e costruisciti il tuo contatore ad hoc con DMax
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.
:) :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.