VB2010 Tab. con campo chiave autoincrement non seq.

di Anonimizzato12151 il
4 risposte
Salve a tutti,
questa è la mia prima discussione nel forum e spero di non aver sbagliato 'stanza'... stò realizzando una applic. e ho un datagridview con il quale aggiungo, modifico e tolgo records di una tabella. La quale chiave primaria è un intero di tipo autoincrement. Ma quando aggiungo dei nuovi record, mi viene assegnato giustamente il nuovo valore del campo chiave. Se però cancello gli ultimi record e poi ne aggiungo di nuovi il contatore autoincrement non torna indietro ma continua la numerazione. Almeno fin quando non chiudo e riapro la finestra. In questo caso prende dall'ultimo record inserito.
Qualcuno sa come mai e come poter rimediare, senza dover chiudere e riaprire la finestra ( il datagridview)?
Grazie a tutti.

4 Risposte

  • Scusate...
    ma con la fretta di scrivere il mio primo post sono stato molto confusionario. Infatti ho riletto ciò che io stesso ho scritto e sinceramente non ho capito gran che.

    Riassumendo: stò a sviluppare una applicazione in vb2010 che presenta un form il quale contiene un datagridview. Questo ultimo è collegato ad una tabella del database (in formato xml) e mi permette di inserire nuovi record, modificarli o cancellarli.

    La chiave primaria della tabella collegata è un intero che si auto incrementa autonomamente.
    Il problema si presenta quando dal datagridview elimino uno o più degli ultimi record, ad esempio ci sono in tutto 10 record per cui l'ultimo ha id = 10 ed io elimino i record che hanno come id = 10, id = 9, per cui mi rimangono 8 record. L'ultimo di quelli rimasti ha id = 8.
    Ora: se io aggiungo un nuovo record questo ultimo avrà id = 11 mentre io vorrei che avesse id = 9.

    Qualcuno sa come poter fare ciò?
    Grazie.
  • Non è possibile, e non ha senso farlo, perchè quell'ID è univoco e tale deve restare.
    Questo è il comportamento standard.

    Se vuoi gestire una sequenza progressiva devi gestirla autonomamente da codice, aggiungendo un ulteriore campo numerico, oppure anche stringa che suoi una codifica del tipo:
    "0000001"
    "0000002"
    "0000003"

    ecc...
  • Ciao Gibra,
    ti ringrazio per la risposta. Sospettavo che la situazione non avesse vie d'uscita. A titolo di informazione, qualora questo problema capitasse a qualcun altro, ho visto che il campo ID può comunque essere modificato a mano e magari, con le dovute attenzioni, si può mettere manualmente l'ID "successivo". Ma sottolineo: ATTENZIONE AL NUMERO CHE SI INSERISCE...
    Grazie.
  • montagne.rocciose ha scritto:


    Ciao Gibra,
    ti ringrazio per la risposta. Sospettavo che la situazione non avesse vie d'uscita. A titolo di informazione, qualora questo problema capitasse a qualcun altro, ho visto che il campo ID può comunque essere modificato a mano e magari, con le dovute attenzioni, si può mettere manualmente l'ID "successivo". Ma sottolineo: ATTENZIONE AL NUMERO CHE SI INSERISCE...
    Grazie.
    Scusa la franchezza, ma dissento completamente da ciò che affermi, perchè è assolutamente sbagliato nel rispetto del concetto di univocità.
    Se puoi modificare il valore a mano significa che non un campo univoco, perchè nessun motore di database permette di modificare un campo univoco 'a mano'.
    Ancor meno se è una PRIMARY KEY.
Devi accedere o registrarti per scrivere nel forum
4 risposte