Récupération du nº de ligne access [Résolu]

Signaler
Messages postés
11
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
15 novembre 2011
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
Bonjour a tous,
Je débute avec VB2005 et j'aimerais savoir comment je pourrai faire pour récupérer le nº du dernier enregistrement de ma base de données.
Merci.

11 réponses

Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut, pourquoi ne pas passer par une requête SQL ?

"SELECT MAX(TaClé) AS IdMax FROM TaTable"

Tu crées un recordset (mettons rst) avec ça et rst!IdMax te donnera l'ID du dernier enregistrement.

Attention, puisqu'il s'agit de numéro auto, ça ne correspondra pas forcément au nombre d'enregistrements. Pour ça c'est plutôt :

"SELECT COUNT(TaClé) AS NbEnreg FROM TaTable"
et rst!NbEnreg te donne le nombre d'enregs de ta table.
Messages postés
256
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
6 novembre 2009
1
Bonsoir,
C'est un peu vague.
- Ta cléf primaire est un champ auto ?
- Tu veux la récupérer pour en faire quoi ?
- Comment veux tu accéder à la table ?

Jcbé[^]
Messages postés
11
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
15 novembre 2011

Jcbé[^],
Ma clef est un champ auto et je voudrais le récupérer pour pouvoir ajouter des données dans une seconde table en fonction de ce nº.
J'accède a ma base de données via une connection OleDb.
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Salut, il faut que dans la structure de ta 2nd table, elle fasse référence via une relation entre table au ID de la ligne

Chris...
Web : Firstruner
Messages postés
11
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
15 novembre 2011

Chris...,
Il y a une relation entre mes 2 tables mais quand j'enregistre mes données via VB,les données de lapremière table sont bien enregistrées mais pas celles de la seconde table. 
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir,
je pense plutôt à une erreur de type de donnée.
Si ton Id est auto dans ta 1° table,
il doit être obligatoirement Entier Long dans ta 2° table


Dolphin Boy,
j' avoue que je ne saisi pas bien...
tu affirmes une chose et tu conseilles le contraire.
La première séquence est la bonne,
et ton raisonnement est correct, car il s' agit bien de Max...

mais tu rajoutes
^^Pour ça c'est plutôt : ...COUNT...
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Autant pour moi , Boy !
je viens de saisir le sens de ton propos,
c' était juste une info, je pense...

Vitorj,
il faudrait pensé à nous communiquer le code
concernant l' ajout ,dans ta seconde table.
Peut être qu' il faudra voir de ce côté-ci
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Sinon opte pour une requette SQL qui te renvoi [mailto:l'@@IDENTITY l'@@IDENTITY] de la ligne crée, et que tu réutilise dans la 2nd table, je l'ai fait sur un serveur SQL pour une validation de commande, je créais une ligne commandevalidée qui avais un ID et dans les articles commander du gars y'avais une colonne dédiée à l'ID de la commandevalidée, si la valeur était à -1 (par defaut) alors l'article n'était pas valider.
la commande récupèrais l'ID de la nouvelle validation pour l'enregistrer sur chaque ligne des articles à valider. le tout dans une seule procédure stockée.


Mais stockée ou pas tu peux le refaire en SQL commande direct ça pareil ;)



Chris...


Web :
Firstruner
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Tout à fait,
ça corresponderait pour moi à une transaction:

'j' insére une nouvelle ligne dans table 1
'si l' insertion réussit
'je récupère l' Id de la nouvelle ligne

On Error GoTo err_ADD
BeginTrans
'j' insére une nouvelle ligne dans table 2
' avec comme identifiant l' Id récupéré
CommitTrans

'si la transaction échoue
err_ADD:
RollBack
' et je supprime la ligne dans table1
Messages postés
11
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
15 novembre 2011

Merci a tous,
J'ai reussi a resoudre le problème avec la requête SQL : "SELECT MAX(TaClé) AS IdMax FROM TaTable".
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Avis personnel :
Utiliser un Entier Long plutôt qu' un n° auto.
-Sa gestion est plus facile
-vous garderez toujours le contrôle sur votre Id.
-Possibilité de réinitialiser à 0
-Possibilité d' insertion pour combler un espacement
entre deux valeurs

Si c' était encore moi :
Table° 1 Table° 2
Id:Entier Long Id:Entier Long

Pour ajouter des lignes aux deux tables
'------------------------------------------------------
Function MAJ () As Boolean
- je récupère le dernier de Table° 1, que j' incrémente de 1
On Error Goto err_ADD
BeginTrans
j' insère une ligne dans Table°1 (Id récupéré)
j' insère une ligne dans Table°2 (même Id)
CommiTrans
MAJ =True
Exit Function

err_ADD:
RollBack
End Function
'-------------------------------------------------------
Ainsi si la transaction échoue, les deux insertions
sont annulées d' un coup.


Je comprend que parfois on cherche la facilité.
Avec le n° auto, on peut ajouter des lignes sans
se soucier de l' Id, mais ce n' est que des problèmes !