[Access][VBA]Recup la clef autoincrémenté de l'enregistrement en cours

Recup la clef autoincrémenté de l'enregistrement en cours [Access][VBA] - SQL/NoSQL - Programmation

Marsh Posté le 01-08-2003 à 15:57:40    

:hello:
 
J'ajoute mes enregistrement danss les tables du bel Access (:ange:) à l'aide de cette methode : (la clef primaire de la table est en Auto)
 

Code :
  1. Dim Data as Database
  2. Dim RcSet_mat As Recordset
  3. Set data = CurrentDb
  4. Set RcSet = data.OpenRecordset("Nom_Table" )
  5. RcSet.AddNew
  6.    RcSet!Nom_Champs = ValeurDuChamps
  7. RcSet.Update


 
Et j'aimerais donc suite à ca recuperer le numéro de la clef qu'il a généré... Il doit bien y avoir un moyen pour qu'il me retourne ca non ? :??: (car j'aimerais eviter de bidouiller en allant simplement recuperer le numero de la clef du dernier enregistrement de la table... :))
 
Voilou, si quelqu'un a une idée, mercÿte. :jap:
 
(ah vi, et ya vaguement ca sur le sujet, mais je n'y ai po trouvé mon bonheur... :'()

Reply

Marsh Posté le 01-08-2003 à 15:57:40   

Reply

Marsh Posté le 01-08-2003 à 16:04:50    

Bah, récupère simplement le max de ta clé : il doit correspondre au dernier enregistrement non ?


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 01-08-2003 à 16:07:38    

Ué mais le pbm c'est que je trouve que ca fait un peu bidouillage... :/ Si par exemple yavait eut un autre enregistrement entre temps, ca ne serait plus le bon... Bon, ya quasiment aucune chance, d'autant plus qu'il n'y aura pas bcp de personnes sur la base, mais j'aimerais bien avoir une méthode infaillible si ca existe... :)

Reply

Marsh Posté le 04-08-2003 à 10:24:39    

[:yoyoz]

Reply

Marsh Posté le 04-08-2003 à 12:34:29    

latruffe a écrit :

Bah, récupère simplement le max de ta clé : il doit correspondre au dernier enregistrement non ?


en Access ce n'est pas forcément un autoincrement qui est utilisé :non:
 
pour répondre à la question, et si ma mémoire est bonne, le mécanisme ne fonctionne qu'avec Access 2000 et DAO 3.6 au minimum.

Reply

Marsh Posté le 04-08-2003 à 13:09:38    

Bah il a dit que ça clé primaire était en auto(number), non ?


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 04-08-2003 à 13:20:32    

Disons qu'en Access t'as l'autonumber par incrémentation mais aussi par choix aléatoire d'un ID (unique bien entendu). Cela dit je connais personne qui utilise la seconde possibilité.
 
edit: la méthode du max() n'est pas valable si la base est accédée par plusieurs utilisateurs -> ça risque de se viander.


Message édité par drasche le 04-08-2003 à 13:21:26
Reply

Marsh Posté le 04-08-2003 à 13:53:57    

drasche a écrit :

Disons qu'en Access t'as l'autonumber par incrémentation mais aussi par choix aléatoire d'un ID (unique bien entendu). Cela dit je connais personne qui utilise la seconde possibilité.
 
edit: la méthode du max() n'est pas valable si la base est accédée par plusieurs utilisateurs -> ça risque de se viander.


 
Exact :jap:
 
Pour la méthode du max, je suis d'accord (même si ile est rare que 50 personnes travaillent en même temps sur un base de donnée Access).
 
Sinon, je trouve que les techniques proposées dans le site indiqué dans le premier post sont pas trop mauvaise (utilisation d'un nombre aléatoire et select via ce nombre)...


Message édité par latruffe le 04-08-2003 à 15:16:41

---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 04-08-2003 à 14:30:58    

Mais c'est vraiment etrange qu'il n'y ai rien de prévu et qu'il soit necessaire de faire un enregistrement "bidon" afin de le retrouver tout de suite puis de le rectifier... :(
 
J'aurais voulu trouver un truc, comme dire... "plus propre", meme si les methodes ne sont pas des trucs affreuses pour autant... :)

Reply

Marsh Posté le 04-08-2003 à 15:29:04    

une alternative qui marche sur la plupart des bases de données est de lancer un ordre INSERT tout en SQL et de faire un SELECT @@IDENTITY; ensuite pour récupérer la valeur du champ autonumbered, mais ça se fait indépendamment de ton recordset bien entendu :/
 
Concernant le fait que ton implémentation ne marche pas, je dirais que c'est un "problème" connu mais non résolvable en gardant ton implémentation actuelle (sinon de passer à Access 2000 et DAO 3.6, ou ADO)

Reply

Marsh Posté le 04-08-2003 à 15:29:04   

Reply

Marsh Posté le 04-08-2003 à 16:12:34    

Bon bah je crois que je vais opter pour une solution de semi bricolage alors... :/  
 
Mici pour les réponses ! :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed