Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    VB6 e ACCESS - incremento Contatori

    CIAO!
    Ho un piccolo intoppo nel mio progetto!
    Nel mio programma quando si inserisce un nuovo record (nel DB Access) ho una classica chiave primari chiamata ID che nel DB è un contatore a incremento automatico.

    Sin qui tutto ok!
    Solo che nel mio programma c'è anche una funzione per eliminare i records che nn servono +! IL problema nasce se elimino uno di questi records!
    Infatti il contatore continua imperterrito a incrementare da dove si era fermato!

    In sostanza: se per esempio creo 3 clienti questi avranno campo ID:
    1,2 e 3. Se poi però elimino per esempio il numero 3, e poi creo un nuovo cliente, non me lo nomina come 3 ma come 4!!!

    Non voglio nemmeno pensare cosa succede se elimino il 2!!!!

    c'è qualche funzione che gestisce sta cosa? Sarebbe anche bello se eliminando il 2, venisse cambiato l'id del 3 (da 3 a 2).

    Spero di essermi spiegato!
    CIAO!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Non credo ci sia un modo di interagire con il meccanismo di incremento dei contatori, e sinceramente credo che dal punto di vista logico sia proprio giusto così: quando si progetta una base di dati, si dovrebbe evitare di attribuire a qualsiasi ID, che sia autoincrementale o casuale, un significato diverso da quello che è un semplice garante del fatto che ciascun record avrà un valore univoco e differente dagli altri su quel campo.

    Se hai bisogno di utilizzare il valore numerico per altri scopi, aggiungi un campo apposito che gestirai come credi, pur mantenendo - per sicurezza - l'ID autoincrementale come chiave primaria.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653
    scusa PincoPallino2 ma con RecordCount nn riesci a gestirti la cosa ?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da yyzyyz
    scusa PincoPallino2 ma con RecordCount nn riesci a gestirti la cosa ?
    Bisogna vedere cosa sta cercando di fare o qual è l'informazione a cui è interessato ma che non riesce ad ottenere con il campo contatore...

    Magari attendiamo una sua risposta e vediamo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    allora, il contatore lo uso per un solo motivo
    Ho una listbox con la lista di tutti i nomi e cognomi della tabella, facendo dblClick su un item della lista si entra nella skeda personale della persona cliccata. Siccome ci possono esser omonimi ho inserito il campo ID e metto anche quello nella lista insieme al nome e il cognome (in modo che l'item sia univoca).

    Cmq effettivamente io per comodità avevo usato il contatore access...ma con recordCount potreri gestirmi tutto da vb.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Pinco Pallino 2
    allora, il contatore lo uso per un solo motivo [...]
    Può essere utile visualizzare l'ID dell'utente, ma va considerato come codice univoco e non come un "numero record".

    In sostanza, non mi fossilizzerei sulla progressione del contatore.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    La scelta è tra un campo ID di tipo contatore oppure un campo libero dove memorizzare valori univoci.

    Nel primo caso Access (ma anche qualunque altro database dotato di questa funzionalità) imposta automaticamente un valore numerico (long) incrementando un contatore interno che è indipendente dai record presenti in tabella. In generale, se si cancella un record dalla tabella, il suo ID verrà perso definitivamente e non ci sarà modo di riutilizzarlo. Tale comportamento è corretto ed auspicabile ed evita un sacco di confusione quando per qualunque motivo fosse necessario riferirsi ad un cliente mediante il suo ID.

    Nel secondo caso puoi utilizzare un campo qualsiasi come chiave primaria, ma è necessario che tale campo sia sempre valorizzato e unico. Per esempio potresti utilizzare il codice fiscale, oppure un tuo contatore determinato in base ad altri criteri.
    Chi non cerca trova.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.