MSDE : Définition de la clé pour sous-feuille de données
1 réponse
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...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 autonumOrst.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
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
autonumOrst.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" <ac@expedito.fr> wrote in message
news:08de01c46e62$19fc44f0$a301280a@phx.gbl...
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...
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 autonumOrst.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...