Recuperer clé primaire [Résolu]

cs_Talere 102 Messages postés vendredi 29 mars 2002Date d'inscription 14 février 2013 Dernière intervention - 11 avril 2006 à 16:23 - Dernière réponse : cs_Talere 102 Messages postés vendredi 29 mars 2002Date d'inscription 14 février 2013 Dernière intervention
- 12 avril 2006 à 08:56
Bonjour,

J'ai une instrcution SQL qui m'insère une ligne dans une de mes tables Access ("INSERT INTO Ma_Table(Mon_Champ) VALUES (ma_valeurvaleur)"). J'execute cette requete via ADODB mais le problème, c'est que j'aurais besoin de la clé primaire qui a été généré lors de cette création (champs "Mon_ID" de la table "Ma_Table").

Y-a-t-il un moyen rapide d'y parvenir ? car justement, vu le nombre de demandes, un find sur un recordset pourrait prendre trop de temps ...

Merci pour votre aide ...

TALERE
Afficher la suite 

2 réponses

cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 11 avril 2006 à 20:13
+3
Utile
Salut
En fait, ceci est un faux problème.
Dans une DB, les clés primaires sont faites pour dissocier des enregistrements et faire le lien avec d'autres tables.
Elles ne sont normalement pas faites pour identifier extérieurement un enregistrement.
Sous MySQL, il existe LAST_INSERT_ID qui renvoie le dernier ID créé, mais pas sous Access

La solution peut consister à générer toi même un identifiant au moment de la requète Insert. Par exemple, un champ de type LongInteger dans lequel tu places le nombre de secondes depuis le 1er janvier 1970 (date choisie comme l'an zéro de l'informatique, le TimeStamp), valeur facilement calculable avec la fonction VB (supportée aussi sous le VBA de Access) : DateDiff("s", "01/01/1970", Now)
Exemple :
Dim monID As Long
monID = DateDiff("s", "01/01/1970", Now)
SQL = "Insert into maTable (TimeStamp, Test) Values (" & monID & ", 'Codes Sources')"
...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
Cette réponse vous a-t-elle aidé ?  
cs_Talere 102 Messages postés vendredi 29 mars 2002Date d'inscription 14 février 2013 Dernière intervention - 12 avril 2006 à 08:56
0
Utile
Je te remercie pour ta réponse plutot clair ...

En fait j'ai besoin de la clé primaire car j'ai un placé un textBox d'index 0 sur ma feuille et je charge par la suite, plusieurs textbox qui peuvent (ou pas) être lié à un enregistrement . Avoir l'ID me permettait de le stocker dans le tag de la textbox, et à chaque changement de celle ci, je mettais à jour le champs dans la base via l'identifiant unique. si l'enregistrement n'existait pas ( le tag = "") alors je crée l'enregistrement mais il fallait alors que je stocke le tag dans ma textbox ( d'ou mon besoin ...).

En fait ce que j'ai fait, c'est que si le tag est bien vide, j'utilise le recordset et la méthode addnew, qui me permet de récupérer la clé, sinon, j'utilise directement l'instruction SQL "UPDATE ...".
Toutefois, ma première idée a été de créer l'enregistrement dès le départ si celui ci n'existait pas ... cette solution était plutot longue et j'ai eu finalement l'idée de la première.

A bientot,

TALERE

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.