2010-03-21 5 views
0

Je possède ce code:VBA Comment trouver le dernier identifiant d'insertion?

With shtControleblad 
    Dim strsql_basis As String 
     strsql_basis = "INSERT INTO is_calculatie (offerte_id) VALUES ('" & Sheets("controleblad").Range("D1").Value & "')" 

     rs.Open strsql_basis, oConn, adOpenDynamic, adLockOptimistic 

     Dim last_id As String 
     last_id = "select last_insert_id()" 
End With 

La last_id chaîne n'est pas rempli. Qu'est-ce qui ne va pas? Je dois trouver te last_insert_id pour pouvoir l'utiliser dans une autre requête.

+0

last_id ne contient pas "select LAST_INSERT_ID()"? Combien pariez-vous sur cela? –

Répondre

1

vous devez ajouter rs.movelast après avoir ouvert le recordset, qui devrait aider

+0

Comment cela s'appliquerait-il à ma situation? Et qu'en est-il lorsque plus de gens utilisent le db? – Muiter

+1

Qu'est-ce que vous essayez vraiment de faire? Vous souhaitez sélectionner le dernier ID inséré, basé sur une instruction d'insertion? Peut-être que vous devriez d'abord exécuter une instruction select, puis passer au dernier enregistrement, en lire la suite, puis, avec ces données, faire l'instruction d'insertion. – Whakkee

1
last_id = "select last_insert_id()" 

Vous avez défini l'instruction SQL à exécuter, mais ont ne l'a signé.
Appelez rs.Open avec l'instruction ci-dessus pour obtenir 'last_insert_id` à la place.

Si MySQL prend en charge plusieurs instructions SQL sur une seule ligne, vous pouvez faire

strsql_basis = "INSERT INTO is_calculatie (offerte_id) 
VALUES ('" & Sheets("controleblad").Range("D1").Value & "') 
; select last_insert_id()" 

rs.Open strsql_basis, oConn, adOpenDynamic, adLockOptimistic 
+0

Il ne prend pas en charge les instructions multiples. J'ai essayé Dim last_id As String last_id = "select LAST_INSERT_ID()" rs.Open last_id, oConn, adOpenDynamic, adLockOptimistic Mais pas le résultat voulu. – Muiter

Questions connexes