[ACCESS] dernier enregistrement

Fermé
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 17 avril 2008 à 15:39
 thegniark - 30 sept. 2008 à 11:54
Salut a tous,
Dans une base access, j'ai une table avec les champs suivants :
id (NumeroAuto)
nom (String 50)
prenom (String 50)


Lorsque j'execute une requetes via la commande
DoCmd.RunSQL "INSERT INTO matable ( nom, prenom ) VALUES ( ""Diez"", ""Santiago"" );"

Comment faire pour savoir quelle id a ete attribue a cet ajout ?

Merci d'avance
Santiago
A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 avril 2008 à 16:19
Salut;

"SELECT COUNT(*)FROM Tatable"

te donne le nombre d'enregistrements et comme tu es en numeroauto....
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
17 avril 2008 à 16:36
Salut michel_m,
Merci pour ta reponse mais elle ne marche pas dans beaucoup de cas. En effet, avec numeroauto, le meme numero n'est jamais attribue 2 fois. donc si un contact est supprime, il reste un trou. Je peux avoir 10 contacts numerote de 1 a 10. Puis je supprime le contact 6. Je n'ai plus que 9 contacts numerote de 1 a 10. Dans ce cas, on pourrais croire que la requete suivante solutionne le probleme.
SELECT MAX(id) FROM matable;

Que nenni, puisque Access peut (avec des lenteurs et des problemes) fonctionner en reseau.

16:27:03 : ordi1 ajoute un contact, l'id est 11
16:27:04 : ordi2 ajoute un contact, l'id est 12
16:27:05 : ordi1 demande quel est le dernier contact ajoute... la requete renvoi 12 :-(

0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 avril 2008 à 17:16
re Santiago,

Tout à fait, excuses-moi, je me suis aperçu de ma C.... 1 minute après l'envoi...

je pensais aussi à MAX mais vu ta réponse...(bien que 12 soit bien le dernier enregistrement ? ordi 11 reprensd après la bataille et auras le ? ou alors tu passes en requete avec fonctionnement pessimiste (adlock...): tant que ordi1 n'aura pas fini, ordi2 attendra, mais...)

Donc je sèche

Michel
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
17 avril 2008 à 17:42
C'est pas tres grave, le nombre d'utilisateur etant restreint, je prends tres peu de risque avec Max(id).
Merci quand meme pour ton intervention.
0

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

Posez votre question
Bonjour,

Up de thème car j'ai une petite question qui semble dans les mêmes cordages.

Je travaille sur une application qui touche à des tables Access 2002 via du code VBA. (boulot : j'ai pas choisi)

Je suis tombé sur une requête liée à une table ayant notament comme champs :
DATE ; type(alarmes, Evnt) ; Statut local (réussi, échoué) ; statut réseau (réussi, echoué)

Le développeur a écrit sa requete en VBA comme ça : SELECT LAST "table.DATE" as DernierDeDATE ...

DATE n'est pas une "clé primaire", disons que c'est la combinaison DATE & type qui est une clé primaire. (en gros, j'ai 2 occurences de chaque date)

Je me suis apercu en debug que cela me renvoyait une date totalement aléatoire...

LAST est-il une instructions valable ? J'ai fait un essai avec MAX et ca semble fonctionner... mais dans la théorie, je n'ai pas le droit de toucher au code VBA de l'application.

Des conseils ?

NOTA : Je suis un TRES grand débutant en Access et BDD en général.
0