Recuperer clé primaire

Résolu
cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013 - 11 avril 2006 à 16:23
cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013 - 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

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 avril 2006 à 20:13
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
3
cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013
12 avril 2006 à 08:56
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
0
Rejoignez-nous