Campo contatore

di il
7 risposte

Campo contatore

Aprofitto per fare gli auguri a tutti quelli del forum ed espongo subito il problema:

qualcuno sà se esiste qualcosa per poter azzerare il campo id contatore senza però perdere i record precedentemente scritti? Grazie in anticipo

7 Risposte

  • Re: Campo contatore

    Se il campo che vuoi azerare e' chiave primaria mi aspetto che non sia possibile azzerarlo altrimenti duplicheresti la chiave primaria il che non e' consentito.
  • Re: Campo contatore

    Specifica cosa intendi per azzerare... o meglio che significato avrebbe la cosa...!

    Se l'esigenza è resettarlo all'inizio dell'anno, direi che la richiesta non ha senso, o meglio il campo COUNTER non è preposto a questo utilizzo, per questo solitamente si usano campi Testo costruiti con parte Alfabetica e Numerica, come per alcune metodiche di produzione Progressivo Fatturazione.

    In aggiunta, come ti hanno fatto notare è da valutare nello specifico se il campo in oggetto è o meno CHIAVE PRIMARIA(di fatto l'azzeramento porterebbe alla duplicazione di Indice quindi VIOLA le regole), se Chiave Esterna avresti un disallineamento dei riferimenti relazionati.
  • Re: Campo contatore

    Si alex capito. penso che allora dovrò modificare il mio database. In poche parole ho utilizzato questo database tutto l'anno, e un programma che compilato con l'anagrafica di ogni persona mi generava un foglio di viaggio numerato progressivamente appunto tramite il campo contatore definito come chiave primaria. Inoltre per evitare che le persone che compilavano i vari fogli (poiche e utilizzato da piu' utenti), reinserissero magari dopo 3 giorni i dati della stessa persona nuovamente a mano, avevo fatto un pulsante duplica record che assegnava direttamente il primo nuovo numero disponibile (ovvero il primo record vuoto). Ora compattando IL DB chiaramente la numerazione riparte da uno, ma i dati anagrafici delle persone precedentemente compilati spariscono come e normale che sia. Ho scritto questo post perchè leggevo su internet di una persona che voleva fare un programmino che permettesse l'azzeramento del campo id contatore lasciando inalterati i record scritti. Anch'io ho pensato che non si potesse fare però la mia conoscenza di access rispetto alla tua e di altri e sicuramente limitata e pensavo magari a del codice vba o quant'altro che mi permettesse di farlo senza andare a rimettere mano al programma.
  • Re: Campo contatore

    @Alex ha scritto:


    Specifica cosa intendi per azzerare... o meglio che significato avrebbe la cosa...!

    @Alex ha scritto:


    se il campo in oggetto è o meno CHIAVE PRIMARIA(di fatto l'azzeramento porterebbe alla duplicazione di Indice quindi VIOLA le regole), se Chiave Esterna avresti un disallineamento dei riferimenti relazionati.

    Markez ha scritto:


    Ho scritto questo post perchè leggevo su internet di una persona che voleva fare un programmino che permettesse l'azzeramento del campo id contatore lasciando inalterati i record scritti.
    Premesse le osservazioni di Alex e Bomberdini dove non ci piove, occorre che tu specifichi esattamente di quale campo IDContatore stai parlando. Immagino che tu abbia un IDPersona (nella tabella Anagrafica) e un IDViaggio (nella tabella Viaggi) entrambi Contatore e le due tabelle siano relazionate...scusa sto solo ipotizzando e non ho nemmeno compreso il problema dettagliatamente: occorre che tu elenchi per bene tutti i campi tabella/e.

    Non conosco il post di tale persona, ma immagino circa 2 strade nelle quali potresti impantanarti volentieri
    1) La relazione uno-a-molti permette di gestire se vuoi o meno Modificare e/o Eliminare i record correlati a catena.
    2) Si potrebbe pensare di copiare tutti i dati in una nuova tabella con identici campi, ma avente IDNumerico e non Contatore. Poi azzeri la tabella con IDContatore, lasciando invariata la 2a tabella.

    Ho dato una risposta molto approssimativa, brancolante nel buio e con il rischio di fuorviare il problema, ma, ripeto, occorre che tu specifichi meglio il quadro generale (tabelle, campi, relazioni...)
  • Re: Campo contatore

    Ciao osvaldo, ti ringrazio per la risposta e pur non conoscendo il db ti sei avvicinato lo stesso, allora provo a spiegarmi meglio:

    Io ho una tabella anagrafica che comprende i campi n°fdv(idcontatore) data,nome,cognome,codice fiscale,ecc ecc., il tutto poi riportato chiaramente in una maschera con i relativi campi descritti sopra. Il db e utilizzato da vari utenti che gesticono personale diverso
    quindi se ad esempio io gestisco mario rossi e domani deve partire a cagliari inserisco i suoi dati e il contatore automaticamente mi genera come 1 il primo foglio di viaggio e sin qui tutto ok.
    passano 2 settimane e mario rossi deve nuovamente partire ma a milano, ricerco il record inserito due settimane prima e tramite il pulsante duplica record (ho inserito del codice trovato in rete) mi copia tutti i dati di mario rossi al primo record disponibile ad esempio il 35 (poiche gli altri 33 sono stati compilati da altri utenti che gestiscono altre persone), dove poi vado a correggere solo la città in quanto codice fisc, nome ecc ecc rimangono sempre gli stessi. Ora chiaramente con il nuovo anno poichè la numerazione deve essere annuale e quindi ripartire da uno, compattando il database e vero che riparte da uno ma chiaramente si cancellano i dati di tutte quelle persone inserite in anagrafica l'anno prima. Io avrei voluto evitare la cancellazione di tutte queste persone per poi riutilizzarle nel duplica record senza doverle reinserire. Tu dici che creando due tabelle con gli id come hai spiegato nella tua risposta risolvo? Grazie osvaldo
  • Re: Campo contatore

    La proposizione del tuo problema è molto anomala su diversi fronti.

    1) Innanzitutto sarebbe opportuno che tu suddivida i dati su 2 tabelle:
    ANAGRAFICA
    IDPersona (Contatore)
    Nome
    Cognome
    CodFisc
    ...altri campi

    VIAGGI
    IDViaggio (Contatore)
    Data
    Destinazione
    ...altri campi
    IDPersona (Numerico)

    Relazione ANAGRAFICA.IDPersona uno-a-molti con VIAGGI.IDPersona

    Il vantaggio che avresti da questa struttura, sarebbe proprio quello di non dover compiere una forzata operazione come il Duplica record di cui tu parli. Nella tabella/maschera VIAGGI, basterebbe selezionare, con una opportuna casella combinata, il nome della Persona (rappresentato da IDPersona) che svolge il ruolo di portarsi appresso proprio tutti i dati che gli riguardano a monte.

    2) Problema Viaggio 2012/1; 2012/2; 2012/3...tu vorresti ogni anno azzerare il contatore. Ciò significa cancellare tutti i record da VIAGGI e compattare il database (nel frattempo la tabella ANAGRAFICA resta invariata). Prima di cancellare, allora ricordati di copiare tutti i Viaggi 2012 in una tabella "Viaggi 2012", avente gli stessi campi di VIAGGI...ecc...come ho detto nella mia precedente risposta.
    Fatto così credo di rispondere alla tua domanda, ma si tratta di un ragionamento anti-Access-Normalizzazione. Non ha senso avere più tabelle con gli stessi campi. La tabella VIAGGI deve continuare ad avere il suo campo Data che scorre cronologicamente (indipendente dall'anno)...occorrerebbe poi un altro campo "contatore relativo" all'anno (Numerico). Access non consente di avere autonomamente 2 campi Contatore nella stessa tabella. Altri utenti avrebbero già richiesto come ottenere un "contatore relativo", il discorso diventa piuttosto complicato, io non ci ho mai capito molto, ma prova a cercare nel forum proprio questo argomento e come è stato affrontato.
  • Re: Campo contatore

    OK Osvaldo proverò a fare quello che hai scritto GRAZIE MILLE e grazie anche ad alex e bomber
Devi accedere o registrarti per scrivere nel forum
7 risposte