OVH Cloud OVH Cloud

Obtenir la clé primaire ?

10 réponses
Avatar
Sam
Bonjour,

J'aimerais obtenir la clé primaire d'un enregistrement entre un .AddNew et
un .Update
Ex:

With rstClients
.AddNew
lngNewClé= !PrimaryKey
!Nom="My customer"
.........
.Update
End With

Cette fonction fonctionne bien avec une table attachée Access, mais avec une
table SQL c'est impossible d'avoir le "lngNewClé"car la clé n'est générer
qu'au .Update comparativement à une table Access standard qui elle est créer
automatiquement au AddNew

N.B. Imossible d'utiliser le Dmax car beaucoup trop lent.


Merci de vos Suggestions !

10 réponses

Avatar
Raymond [mvp]
Bonjour.

PrimaryKey n'est pas une propriété mais un nom conventionnel qu'on utilise
pour nommer la clé primaire. PrimaryKey est le nom de l'index clé primaire.
la clé primaire est un index qui a la propriété Primary à True. si tu veux
trouver le nom de la clé primaire, il faut lister tous les index et vérifier
s'ils ont la propriété Primary à True.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sam" a écrit dans le message de news:

Bonjour,

J'aimerais obtenir la clé primaire d'un enregistrement entre un .AddNew et
un .Update
Ex:

With rstClients
.AddNew
lngNewClé= !PrimaryKey
!Nom="My customer"
.........
.Update
End With

Cette fonction fonctionne bien avec une table attachée Access, mais avec
une table SQL c'est impossible d'avoir le "lngNewClé"car la clé n'est
générer qu'au .Update comparativement à une table Access standard qui elle
est créer automatiquement au AddNew

N.B. Imossible d'utiliser le Dmax car beaucoup trop lent.


Merci de vos Suggestions !










Avatar
3stone
Salut,

"Raymond [mvp]"
| PrimaryKey n'est pas une propriété mais un nom conventionnel qu'on utilise
| pour nommer la clé primaire. PrimaryKey est le nom de l'index clé primaire.
| la clé primaire est un index qui a la propriété Primary à True. si tu veux
| trouver le nom de la clé primaire, il faut lister tous les index et vérifier
| s'ils ont la propriété Primary à True.


heu... pour illustration...

Sur un recordset, il suffit de faire :

rst.Index = "PrimaryKey"
rst.Movelast

pour que le movelast utilise l'index de la clé primaire, sans en connaître le nom.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Raymond [mvp]
Bonjour Pierre.

c'est normal, PrimaryKey est le nom d'index par convention universelle. on
pourrait très bien l'appeler TOTO.
c'est access qui indique le nom PrimaryKey dans le nom d'index lorsqu'on
clique sur l'icone clé primaire mais ce n'est pas une propriété. donc
lorsqu'on veut le nom exact de la clé primaire , passer par PrimaryKey peut
être complètement erroné.
la propriété clé primaire est un boolean nommé Primary.

à part ça , toujours du boulot ? on ne te voit plus.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"3stone" a écrit dans le message de news:
%23KXa$
Salut,

"Raymond [mvp]"
| PrimaryKey n'est pas une propriété mais un nom conventionnel qu'on
utilise
| pour nommer la clé primaire. PrimaryKey est le nom de l'index clé
primaire.
| la clé primaire est un index qui a la propriété Primary à True. si tu
veux
| trouver le nom de la clé primaire, il faut lister tous les index et
vérifier
| s'ils ont la propriété Primary à True.


heu... pour illustration...

Sur un recordset, il suffit de faire :

rst.Index = "PrimaryKey"
rst.Movelast

pour que le movelast utilise l'index de la clé primaire, sans en connaître
le nom.


--
A+
Pierre (3stone) Access MVP


Avatar
3stone
Salut,

"Raymond [mvp]"
| c'est normal

J'avais dit autre chose ?


Sam souhaite obtenir la *valeur* de la clé primaire après un .addnew, pas le nom !



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Raymond [mvp]
pour obtenir la valeur de la clé primaire, il faut connaitre l'index qui a
la propriété primary, donc boucler sur les indexes.

de toute façon, il connait sûrement le nom de sa clé primaire sans aller
chercher l'index.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"3stone" a écrit dans le message de news:

Salut,

"Raymond [mvp]"
| c'est normal

J'avais dit autre chose ?


Sam souhaite obtenir la *valeur* de la clé primaire après un .addnew,
pas le nom !



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw



Avatar
Sam
Bonjour
Désoler je me suis mal exprimé, "PrimaryKey" etais un exemple elle
correspond à un champ "NuméroAuto", donc c'est cette valeur que je veut
récupérer lors d'un ajout d'un enregistrement.


Merci




"Raymond [mvp]" a écrit dans le message de
news: %
pour obtenir la valeur de la clé primaire, il faut connaitre l'index qui a
la propriété primary, donc boucler sur les indexes.

de toute façon, il connait sûrement le nom de sa clé primaire sans aller
chercher l'index.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"3stone" a écrit dans le message de news:

Salut,

"Raymond [mvp]"
| c'est normal

J'avais dit autre chose ?


Sam souhaite obtenir la *valeur* de la clé primaire après un .addnew,
pas le nom !



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw







Avatar
Raymond [mvp]
le numauto clé primaire est placé dès que le addnew est exécuté, il suffit
de le charger où tu veux dès que le addnew est fait.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sam" a écrit dans le message de news:
%
Bonjour
Désoler je me suis mal exprimé, "PrimaryKey" etais un exemple elle
correspond à un champ "NuméroAuto", donc c'est cette valeur que je veut
récupérer lors d'un ajout d'un enregistrement.


Merci



Avatar
Sam
Bonjour,

Effectivement avec une table Access elle est disponible mais pas avec une
table SQL Serveur, d'ou là mon problème !

Merci

Sam





"Raymond [mvp]" a écrit dans le message de
news:
le numauto clé primaire est placé dès que le addnew est exécuté, il suffit
de le charger où tu veux dès que le addnew est fait.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sam" a écrit dans le message de news:
%
Bonjour
Désoler je me suis mal exprimé, "PrimaryKey" etais un exemple elle
correspond à un champ "NuméroAuto", donc c'est cette valeur que je veut
récupérer lors d'un ajout d'un enregistrement.


Merci








Avatar
3stone
Salut,

"Sam"
| Effectivement avec une table Access elle est disponible mais pas avec une
| table SQL Serveur, d'ou là mon problème !


Si tu utilise ADO, tu peux regarder @@IDENTITY



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Sam
Merci de votre aide, j'ai enfin trouver la réponse :
rstCust.AddNew
rstCust("MerchantID") = rs2("merchant_id")
rstCust("InvoiceDate") = Now
rstCust("InvoiceBatchID") = InvoiceBatchID
rstCust.Update

rstCust.Bookmark = rstCust.LastModified
ThisInvoiceRecID = rstCust("InvoiceID")



@+

Sam Pique







"3stone" a écrit dans le message de news:
%233UaJ%
Salut,

"Sam"
| Effectivement avec une table Access elle est disponible mais pas avec
une
| table SQL Serveur, d'ou là mon problème !


Si tu utilise ADO, tu peux regarder @@IDENTITY



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw