OVH Cloud OVH Cloud

MSDE : Définition de la clé pour sous-feuille de données

1 réponse
Avatar
Arnaud
Bonjour,

Je suis en train de m'arracher les cheveux, si vous=20
pouviez faire quelques choses pour qu'il m'en reste un=20
peu... ce serait super !

Je d=E9bute sur MSDE et je n'arrive pas =E0 convertir une=20
function VBA pour qu'elle soit utilisable avec des liens=20
ODBC sur MSDE.

Voici le probl=E8me :
J'ai une table EXPEDITION qui contient une cl=E9=20
nExpedition. Une exp=E9dition est compos=E9e de plusieurs=20
COLIS. J'ai donc une autre table COLIS, avec sa propre=20
table et un champ nExpedition pour faire la relation.

En ACCESS pur, cela fonctionne tr=E8s bien car dans entre
rs.Addnew
et
rs.Update
Je peux r=E9cup=E9rer le rs!nExpedition (num=E9rauto) pour le=20
stocker dans une variable. Et le r=E9utiliser pour d=E9finir=20
le COLIS.nExpedition.

Avec MSDE, le rs!nExpedition n'est pas connu avant le=20
Update...
J'ai tent=E9 ma chance avec des bookmarks, mais cela ne=20
fonctionne pas mieux...

Merci de m'expliquer ce qui me manque.

Arnaud

1 réponse

Avatar
Michel Walsh
Salut


Sous MS SQL Server, le numéro est attribué lors de la sauvegarde (alors
que sous Jet, c'est lors du début de l'édition, comme tu l'as constaté). Par
contre, sous ADO, l'enregistrement demeure sur le nouvel enregistrement
ainsi ajouté,on peut donc le lire... à cet instant...


...
ADOrst.Update
autonum­Orst.Fields("autonum")


par exemple. On peut également récupérer cette valeur via @@Identity, si
aucun trigger ne nous l'a modifiée, ou mieux, générallement, via
SCOPE_IDENTITY( ).

Pour complément d'info: Sous DAO, après l'update le recordset se
repositionne là où il était AVANT l'ajout:

DAOrst.AddNew
...
DAOrst.Update
' le recordset n'est plus sur le nouvel enregistrement

DAOrst.BookmarkÚOrst.LastModified
' le recordset est maintenant sur le nouvel enregistrement.


Mais, comme précisé, sous ADO, le UPDATE laisse le recordset sur le nouvel
enregistrement.




Espérant être utile,
Vanderghast, Access MVP




"Arnaud" wrote in message
news:08de01c46e62$19fc44f0$
Bonjour,

Je suis en train de m'arracher les cheveux, si vous
pouviez faire quelques choses pour qu'il m'en reste un
peu... ce serait super !

Je débute sur MSDE et je n'arrive pas à convertir une
function VBA pour qu'elle soit utilisable avec des liens
ODBC sur MSDE.

Voici le problème :
J'ai une table EXPEDITION qui contient une clé
nExpedition. Une expédition est composée de plusieurs
COLIS. J'ai donc une autre table COLIS, avec sa propre
table et un champ nExpedition pour faire la relation.

En ACCESS pur, cela fonctionne très bien car dans entre
rs.Addnew
et
rs.Update
Je peux récupérer le rs!nExpedition (numérauto) pour le
stocker dans une variable. Et le réutiliser pour définir
le COLIS.nExpedition.

Avec MSDE, le rs!nExpedition n'est pas connu avant le
Update...
J'ai tenté ma chance avec des bookmarks, mais cela ne
fonctionne pas mieux...

Merci de m'expliquer ce qui me manque.

Arnaud