Autore Topic: Conoscere l'indice dell'ultimo record inserito  (Letto 692 volte)

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Conoscere l'indice dell'ultimo record inserito
« il: 14 Dicembre 2012, 11:10:30 »
Premessa:
Mysql : ho una tabella, faccio una query e decido di inserire un altro record. Nel record l'indice si chiama mov_id. QUindi faccio la create, passo i parametri nei campi del record e alla fine update. Perfetto. A questo punto posso conoscere l'indice mov_id appena inserito senza dover rifare una query?

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Conoscere l'indice dell'ultimo record inserito
« Risposta #1 il: 14 Dicembre 2012, 21:54:18 »
Puoi fare in questo modo:

Private Function InserisciRecordeRitornaId() As Integer
Dim Sql As String
Dim tuo_record As Result
Dim tua_connessione As New Connection

  With tua_connessione
    .Host = tuo_host
    .Name = tuo_dbname
    .Port = tua_port
    .User = tuo_user
    .Password = tua_password
  End With

  Sql = "BEGIN; " &
        "INSERT INTO tua_tabella (campo1, campo2) VALUES (1,2); " &
        "SELECT LAST_INSERT_ID(); " &
        "END;"

  tuo_record = tua_connessione.Exec(Sql)

  Return tuo_record[0]
End


Logicamente la tabella dovra' avere un campo chiave integer autoincrementato.

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Conoscere l'indice dell'ultimo record inserito
« Risposta #2 il: 14 Dicembre 2012, 22:59:54 »
Intanto Milio grazie per la cortese risposta.
Sto cercando di adattare il tuo codice al mio prg ed ho fatto in questo modo:
Codice: [Seleziona]
       
            sTabella = m1.sPrefix & "causali"
            hRecMod = M1.$hconn.Create(sTabella)
            hRecMod!cau_sigla = TB_Sigla.Text
            hRecMod!cau_descrizione = TB_Descrizione.Text
            hRecMod.Update
           
           sql = "SELECT LAST_INSERT_ID() "

            hRecMod = M1.$hconn.Exec(sql)  ' esegue la query
           
           Print "ID ", hRecMod.Available, hRecMod.Count
           Print hRecMod!cau_sigla
           
Stranamente  hRecMod.Available è true e hRecord.Counti =1  però va in errore sulla print successiva. Suggerimenti?

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Conoscere l'indice dell'ultimo record inserito
« Risposta #3 il: 16 Dicembre 2012, 00:36:51 »
e se provi Print hRecMod[0]... ?