Récupérer une numéroauto généré après une requête d'insertion

qorbier - 27 nov. 2001 à 10:46
scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 - 19 août 2003 à 14:13
Salut,
je vais tenter de décrire mon problème.
J'ai une table MaTable avec comme clé primaire un numéroauto. Dans mon code VBA, j'exécute une requête d'insertion de cette table et je voudrais connaître le numéroAuto qui a été généré. Est ce que c'est possible?

Merci
Quentin

6 réponses

Salut
Bien sur
Ton NumeroAuto est genere et mis dans la colonne que tu lui spécifie( ColNum ) Il suffit de lire la colonne pour l'avoir
@++ :)
0
Salut,

Si ton code ressemble a :

monrecordset.addnew
monrecordset.fields("champs1")= "...."
.....
monrecordset.update

tu peux recuperer le numero auto en lisant :

monnumauto=monrecordset.fields("MONCHAMPNUMAUTO")

Si ton code ressemble a :

Mabase.execute "insert into ....." alors la c'est pas possible avec access.
Sur des bases comme sql serveur il existe des variables dans sql serveur permettant de recuperer le dernier identifiant cree. @@Identity je crois.

A+
0
Oui, mais il faudrait utiliser la fonction MAX() pour connaitre le numéroAuto de la ligne insérée.

par exemple : SELECT MAX(ColNum) FROM MaTable

A+
0
Salut,

s'il n'y a qu'un seul utilisateur de la base de donnees ca marche. Mais si plusieurs utilisateurs utilisent la meme base, un utilisateur peut recuperer un identifiant creer par quelqu'un d'autre au meme moment. Donc c'est dangereux comme solution.

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Salut,

Je pense qu'ici, c une base access qui est généralement en local...

Mais effectivement, en ce qui concerne les bases multi-utilisateurs, il faudrait utiliser autres choses telles que un RETURNING... INTO ... ou encore un select en fonction de la clé naturelle à partir des champs que tu viens d'insérés.

A+
0
scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
19 août 2003 à 14:13
Essayez ça vous aurez l'air moins stupides :

set monrecordset = maconnexion.execute("select @@identity as id)
msgbox monrecordset!id

Et ça marche aussi bien pour SQL server que ACCESS ou MYSQL ou...

Bonne prog' à tous !
Seb.
0
Rejoignez-nous