View Full Version : [VB.NET + ACCESS] Conoscere ID dopo un INSERT
Salve,
sto scrivendo un programmino in BASIC e utilizzo come database ACCESS.
Dopo aver lanciato un query tipo la seguente:
sql = "INSERT INTO tabella" _
& "(campo) " _
& "VALUES " _
& "(@campo)"
Vorrei sapere l'ID creato senza lanciare un altra query.
è possibile?
Salve,
sto scrivendo un programmino in BASIC e utilizzo come database ACCESS.
Dopo aver lanciato un query tipo la seguente:
sql = "INSERT INTO tabella" _
& "(campo) " _
& "VALUES " _
& "(@campo)"
Vorrei sapere l'ID creato senza lanciare un altra query.
è possibile?
Ciao che io so non esiste niente per ricavarlo devi fare un'altra query tipo io lo faccio con MAX(id) e in sql con le transazioni in modo che se l'insert non va a buon fine la seconda query non la esegue e non avrai un id sbagliato ma questo puoi risolverlo catturando gli errori..
Ciao che io so non esiste niente per ricavarlo devi fare un'altra query tipo io lo faccio con MAX(id) e in sql con le transazioni in modo che se l'insert non va a buon fine la seconda query non la esegue e non avrai un id sbagliato ma questo puoi risolverlo catturando gli errori..
Mi hanno consigliato di fare cosi
Dim sql As String = "INSERT INTO sn " _
& "(codice) " _
& "VALUES " _
& "(@codice)"
cn.Open()
Using MySqlCommand As New OleDbCommand(sql, cn)
MySqlCommand.Parameters.AddWithValue("@codice", codice)
MySqlCommand.ExecuteNonQuery()
End Using
sql = "SELECT MAX(id) FROM sn"
Dim newID As Integer = 0
Using MySqlCommand As New OleDbCommand(sql, cn)
newID = CType(MySqlCommand.ExecuteScalar(), Integer)
End Using
Ed effettivamente funziona, ma stavo valutando di passare da access a sql server per alte funzionalità.
Mi hanno consigliato di fare cosi
Dim sql As String = "INSERT INTO sn " _
& "(codice) " _
& "VALUES " _
& "(@codice)"
cn.Open()
Using MySqlCommand As New OleDbCommand(sql, cn)
MySqlCommand.Parameters.AddWithValue("@codice", codice)
MySqlCommand.ExecuteNonQuery()
End Using
sql = "SELECT MAX(id) FROM sn"
Dim newID As Integer = 0
Using MySqlCommand As New OleDbCommand(sql, cn)
newID = CType(MySqlCommand.ExecuteScalar(), Integer)
End Using
Ed effettivamente funziona, ma stavo valutando di passare da access a sql server per alte funzionalità.
Ciao è la stessa cosa che ti ho detto io solo come ti hanno detto usi i paramiters e va bene per i vincoli ecc...però se per esempio l'insert non va a buon fine per qualsiasi motivo tu avrai l'id non dell'ultimo inserito ma di quello prima quindi se passi ad sql utilizza le transazioni così se l'insert non va a buon fine o il select tutto ritorna come prima come se non fosse successo niente ;)
wingman87
02-08-2011, 20:55
Puoi usare @@identity
http://support.microsoft.com/kb/815629
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.