Newsgroup: it.comp.appl.access
Titolo: Aiuto! Soluzione al Contatore

Qualcuno mi sa dire come faccio a non fare avanzare il contatore di uno se
elimino un record?
Ovvero se elimino il record n°10 e il contatore conta 10, eliminandolo al
prossimo inserimento non avrò 10 ma 11 lasciandomi un buco. Ho scoperto che
con il comando compatta/ripristina il dbase, elimino tale buco ma se il data
base è condiviso in una rete LAN e un altro utente stà lavorando sullo
stesso data base il comando di ripristino è inibito.
Grazie anticipatamente per le risposte
Rodrigo

 ebbe a
dire:

Se MS avesse chiamato il tipo "contatore" in altro modo, non ci
sarebbero stati così tanti fraintesi sul suo utilizzo!
Allora:
un campo di tipo contatore, contrariamente al nome, *non*  *può*
*essere* *utilizzato* per contare i record ovvero per numerarli
progressivamente senza salti di numeri.
Infatti un campo di tale tipo ha la funzione di chiave univoca per una
tabella; cioè Access garantisce che un campo contatore contiene un
valore differente per ciascun record nella tabella, risparmiando ai
programmatori la gestione, ma niente di più.
Per cui se hai bisogno di una numerazione univoca e progressiva (senza
salti), tipo numerazione dei documenti fiscali, devi gestirla tu
scrivendo il codice necessario.
La soluzione tipica consiste nel tenere traccia dell'ultimo
progressivo utilizzato su una tabella apposita, a cui si accede ogni
volta che aggiungi un record a cui assegnare il progressivo.
La cosa complicata è gestire le cancellazioni e i conseguenti "buchi"
di numerazione, ma questo non è tanto un problema di Access, quanto un
problema di scrittura dell'algoritmo corretto.
In ogni caso, visita il sito comune: c'è una trattazione dettagliata
sui campi contatore e, se no ricordo male, anche qualcosa riguardo la
soluzione al tuo problema.
Vincenzo Turturro
-----------------------------------------------------
Niuna impresa, per minima che sia, 
può avere cominciamento e fine senza queste tre cose:
e cioè senza sapere,
senza potere,
senza, con amore, volere
(Anonimo fiorentino, XIV sec.)
-----------------------------------------------------


Il comportamento di un controllo Contatore è così per definizione e non c'è
nessun magheggio che possa cambirlo; però nessuno ti obbliga ad adoperarlo
come chiave primaria di una tabella.
Si è parlato più volte di questo aspetto in questo NG; sul Sito Comune
comunque trovi sia alcune considerazioni sull'uso di un campo contatore come
chiave primaria che il modo di gestire da codice un numero progressivo
tramite un campo numerico, senza adoperare un Contatore il cui comportamento
è quello che ormai ben conosci
Roberto


Ti sei già risposto da solo. Non c'è soluzione se non quella di *non* usare
il campo contatore, ma di usare un campo numerico che ti incrementi tu di
volta in volta aggiungendo 1 al numero precedente. (vedi funzione DMax).
Ciao Michele

SOLUZIONE:
Per azzerare il campo contatore devi avere un'altra tabella VUOTA e copiarla
con copia oggetto e quindi ti si azzera.
Se il database è in rete tutte le tabelle temporanee devono essere contenute
in un database con nome db4.mdb e ogni utente si deve scaricare tu quessto
database (e non in rete) tutti i dati che vuoi prelevati da altre tabelle
con il contatore azzerato.
Ciao
Fammi SAPERE
