VB2010 Tab. con campo chiave autoincrement non seq.

di il
4 risposte

VB2010 Tab. con campo chiave autoincrement non seq.

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

  • Re: VB2010 Tab. con campo chiave autoincrement non seq.

    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.
  • Re: VB2010 Tab. con campo chiave autoincrement non seq.

    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...
  • Re: VB2010 Tab. con campo chiave autoincrement non seq.

    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.
  • Re: VB2010 Tab. con campo chiave autoincrement non seq.

    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