Pour connaitre la valeur d'un champ "identity", donc qui s'auto-incrémente à chaque ajout d'un enregistrement, il faut utiliser la variable implicite @@IDENTITY de SQLServer. Elle s'utilise comme ceci (extrait du code de TroubleTickets):
strQuery = "INSERT INTO tTickets (...) VALUES (...); SELECT @@IDENTITY AS 'Identity' FROM tTickets"
set rs = conn.Execute(strQuery).NextRecordset
newID = rs("Identity")
Le truc c'est de faire, dans la même requête, l'instruction INSERT et une instruction SELECT, en séparant ces deux instructions SQL par un point-virgule.
Ensuite il faut exécuter la requête et sur le résultat de cette exécution faire immédiatement un .NextRecordset pour demander le résultat de la partie "SELECT @@..." de la requête.
On ne peut pas faire plus simple à ma connaissance.
Normalement ce code devrait fonctionner avec .Net, bien que je n'ai pas encore essayé. Si jamais le code compact ci-dessus ne fonctionne pas il est possible de décomposer comme ceci:
'1. construire la requête INSERT:
strQuery = "INSERT INTO tTable..." '*seulement* le INSERT
'2. Exécuter la requête INSERT:
conn.Execute(strQuery)
'3. Lire la nouvelle valeur identity dans un nouveau recordset:
set rsNewID = conn.Execute("SELECT @@IDENTITY FROM tTable")
'4. Lire la valeur identity:
newID = rsNewID(0)
Ceux qui désirent plus d'infos peuvent faire une recherche avec le mot-clé "@@identity" dans MS Technet.
Happy coding!
FG