Recuperare Nuovo ID da record aggiunto tramite codice

di Anonimizzato21367 il
11 risposte
Ciao sto inserendo tramite codice dei record nuovi nel db....
la tabella comprende come chiave primaria un ID univoco a numerazione automatica
come posso recuperare quel valore dopo aver inserito il record in tabella???

ciao e grazie mille

11 Risposte

  • Risolto
    Msgbox = !ID
  • Se ci lavori solo tu va bene, sei in MULTIUTENZA assolutamente NO.
  • Lavoro da solo ma Giusto per conoscenza quale sarebbe alternativa?
  • Una cosa molto snella... appena dopo INSERT(comando SQL) o UPDATE(Vba su Recordset)
    NewID = DBEngine(0)(0).OpenRecordset("SELECT @@identity FROM NomeTabella")(0)
  • Quindi mi sconsigli di inserire un record tramite codice?
  • Sai consigliarmi un buon manuale su sql di access??
    onde evitare centinaia di post al riguardo sono un po' arrugginito in materia....

    in secondo luogo...
    vedo che spesso si preferisce fare gli inserimenti in tabella con codice sql anzichè codice VBA
    che differenze ci sono e in quali contesti è meglio usare l'uno anzichè l'altro???

    ciao e grazie mille
  • Non si può darti dettagli di cosa sia meglio se non hai una base tecnica che ti consente di capire meglio...
    La realtà è che la regola è conoscere tutti i metodi, con Pro e contro e, in base all'esigenza usare il migliore.
    L'inserimeno da codice ad esempio è più lento che un INSERT, quindi se si devono inserire in modo Massivo dei Records... e l'origine è una Query è inutile pensare di fare un ciclo... anche se ho visto gente che per visualizzare la ProgressBar fa anche cose insulse come queste...
    Ci sono poi le query parametriche che NESSUNO USA in modo corretto...
    Da valutare la VALIDAZIONE dei dati da inserire...
    Le variabili sono molte.

    Non so consigliarti un libro, principalmente perchè un libro non è sufficiente, ci sono libri per l'utilizzo/manipolazione dei DATI che espongono sia metodi ADO che DAO, sia tramite codice su Recordset poi ci sono i comandi SQL... e questa teoria si applica a tutti i Database... anche se ovviamente l'attualità vede NET come metodo moderno, quello di cui parliamo in VB6/VBA è sempre in uso finchè ci sarà VBA.
    Access invece ha necessità di aggiungere a questi temi, l'uso dell'interfaccia e del modello ad oggetti specifico...
    Io ai tempi avevo acquistato 5 Libri di buon livello da un migliaio di pagine ognuno... estremamente specialistici di Normalizzazione, DAO, ADO, SQL, Access(VBA), per un buon totale in Lire...

    In ogni caso se alzi lo sguardo c'è un 3D che suggerisce dei libri... parti da quello che leggi li.
  • DoCmd.RunSQL ("INSERT INTO tbDocumento(idUNICO,NumeroDoc,DataDoc,TipoDocumento,TipoMovimento,TipoPagamento,STATO,Emesso,Nota) SELECT ProvvDoc.[idUNICO],ProvvDoc.[NumeroDoc],ProvvDoc.[DataDoc],ProvvDoc.[TipoDocumento],ProvvDoc.[TipoMovimento],ProvvDoc.[TipoPagamento],ProvvDoc.[STATO],ProvvDoc.[Emesso],ProvvDoc.[Nota] FROM ProvvDoc WHERE ID = " & IDDoc & ";")

    NewID = DBEngine(0)(0).OpenRecordset("SELECT @@identity FROM tbDocumento")(0)

    ho provato ma mi da newid = 0
  • Prova usando EXECUTE...
  • Funziona perfettamente così
  • Emadragon ha scritto:


    Funziona perfettamente così
    RunSQL è un comando di Access, mentre EXECUTE è un comando di JET come OpenRecordset...
Devi accedere o registrarti per scrivere nel forum
11 risposte