Recuperare ID da datatable aggiornato

di il
6 risposte

Recuperare ID da datatable aggiornato

Buon pomeriggio,
ho la necessità di recuperare la chiave primaria di ogni record dopo averlo inserito in una tabella:

Dim TL As New DbNotaSpesaTableAdapters.ContabNotaSpesaDettaglioTableAdapter
Dim DtL As New DbNotaSpesa.ContabNotaSpesaDettaglioDataTable

For i As Integer = 0 To ElencoArticoliSel.Count - 1

Dim RigaDtL As DataRow = DtL.Rows.Add
RigaDtL.BeginEdit()
RigaDtL("ID_Listino") = ElencoArticoliSel(i).ID_Listino
RigaDtL("CodListino") = ElencoArticoliSel(i).ICodListino
RigaDtL("DesListino") = ElencoArticoliSel(i).IDesListino
RigaDtL.EndEdit()

Next

TL.Update(DtL)

Con questa ultima istruzione, inserisco le righe nella tabella del db, ma ora ho necessità di recuperare la chiave primaria di ogni riga appena inserita, senza dover rileggere la tabella, in quanto, lavorando su più postazioni, è possibile che subito dopo l'update qualcuno possa aver inserito altre righe dopo di me.

Grazie per l'aiuto

6 Risposte

  • Re: Recuperare ID da datatable aggiornato

    Ciao, giusto per capire... a cosa ti serve recuperare l'id? è ovvio che se qualcuno inserisce il dato dopo di te sarà l'ultimo + 1 ed è un dato univoco... vorresti l'id per fare una ricerca o che altro? la cosa piu logica sarebbe leggere l'ultimo record e recuperarlo ma potresti anche scriverlo in un posto fisso, tipo un file che poi vai a interrogare, le opzioni sono tante, dipende cosa vuoi farci...
  • Re: Recuperare ID da datatable aggiornato

    Buongiorno...l'operazione di recupero ID mi serve per poter aggiungere un record in una seconda tabella con il riferimento all'ID appena creato nella prima tabella. E' chiaro che se recupero l'ultimo id della prima tabella ho matematicamente l'ID giusto, ma dato che la registrazione può essere di più di 1 record tramite TL.update(DtL), dovrei recuperare gli ultimi N record memorizzati. Resta il fatto che, nel tempo che intercorre tra il mio update e il mio recupero record salvati, da un'altra postazione possono aver inserito altri record e quindi il tutto va a perdersi.
    Una soluzione potrebbe essere di eseguire 1 update per ogni rigo del ciclo for, ma potrebbe rallentare l'operazione.
  • Re: Recuperare ID da datatable aggiornato

    Ciao,

    fossi in te mi documenterei sulle Relations che è possibile instaurare tra le DataTable di un DataSet;

    prova a cercare qualcosa tipo: Inserting Relational Data using DataSet and DataAdapter

    HTH
  • Re: Recuperare ID da datatable aggiornato

    Provvedo...grazie
  • Re: Recuperare ID da datatable aggiornato

    Partendo dal presupposto che ovviamente stai usando un database, che sia in access o mysql la cosa piu rapida che ti consiglio è questa.

    crea un campo che sia di connessione tra le due tabelle, ad esempio nel listino 1 potresti avere Articoli che sono anche in altri listini quindi assegni un id manualmente all'articolo e lo riporti poi nella tabella 1 del listino.

    se di default metti il record "0" ovviamente facendo un SELECT troverai tutti i record inseriti e poi te li riporti nella seconda tabella nel campo specifico.
    è un modo di fare che ho imparato studiano mysql e sinceramente oltre che logicamente corretto, funziona sempre.

    spero di essere stato chiaro nella spiegazione....
  • Re: Recuperare ID da datatable aggiornato

    Chiarissimo...è una valida soluzione...ti ringrazio
Devi accedere o registrarti per scrivere nel forum
6 risposte