Récupération du nº de ligne access

Résolu
Vitorj Messages postés 11 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 15 novembre 2011 - 7 nov. 2006 à 19:10
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 8 nov. 2006 à 14:58
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

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
7 nov. 2006 à 22:22
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.
3
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
7 nov. 2006 à 19:18
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é[^]
0
Vitorj Messages postés 11 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 15 novembre 2011
7 nov. 2006 à 19:24
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.
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2006 à 20:26
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
0

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

Posez votre question
Vitorj Messages postés 11 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 15 novembre 2011
7 nov. 2006 à 20:35
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. 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 nov. 2006 à 22:56
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...
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
8 nov. 2006 à 00:11
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
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
8 nov. 2006 à 00:15
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
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
8 nov. 2006 à 00:26
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
0
Vitorj Messages postés 11 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 15 novembre 2011
8 nov. 2006 à 10:10
Merci a tous,
J'ai reussi a resoudre le problème avec la requête SQL : "SELECT MAX(TaClé) AS IdMax FROM TaTable".
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
8 nov. 2006 à 14:58
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 !
0