VBA Accès aux enregistrements d'une table lié
Audrey
-
adelavar Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
adelavar Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Actuellement je travaille sur access. Mon programme en vb marche avec les tables dans la même base mais si je les lient cela ne fonctionne plus.
En effet je souhaite accéder aux enregistrements de ma base avec recordset mais la méthode semble être différentes avec des tables liées. Comment faire?
Merci d'avance.
En effet je souhaite accéder aux enregistrements de ma base avec recordset mais la méthode semble être différentes avec des tables liées. Comment faire?
Merci d'avance.
A voir également:
- VBA Accès aux enregistrements d'une table lié
- Table ascii - Guide
- Table des matières word - Guide
- Acces rapide - Guide
- Accès refusé - Guide
- Accès presse papier - Guide
10 réponses
Merci à voux deux, c'était bien l'action dbopendynaset qu'il fallait mettre.
L'accès aux enregistrements ne mérite même pas d'être changer ca fonctionne comme ca
L'accès aux enregistrements ne mérite même pas d'être changer ca fonctionne comme ca
Bonjour,
qu'entends-tu par des tables liées, ce sont des tables attachées ?
si c'est le cas, cela ne doit pas poser de problème. Je l'utilise depuis longtemps et je n'ai jamais eu de souci.
Peut-être sont-ce des tables liées avec ODBC ?
Peux-tu nous en dire plus : message d'erreur, comportement de l'application ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
qu'entends-tu par des tables liées, ce sont des tables attachées ?
si c'est le cas, cela ne doit pas poser de problème. Je l'utilise depuis longtemps et je n'ai jamais eu de souci.
Peut-être sont-ce des tables liées avec ODBC ?
Peux-tu nous en dire plus : message d'erreur, comportement de l'application ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui ce sont des tables attachées.
Je reprend:
j'ai une base données
et une base traitement. DANS CETTE BASE JE VAIS DANS FICHIER-données externes-liées les tables et voila mes tables sont liées dans mes traitements (pour info cela permet à l'utilisateur de continuer à travailler et de remplir la base pendant qu'on modifie des etas ou des formulaires..)
Donc avec des tables liées recordset ne fonctionne pas il y a qq chose à faire en plus.
Merci à vous de votre intention
Je reprend:
j'ai une base données
et une base traitement. DANS CETTE BASE JE VAIS DANS FICHIER-données externes-liées les tables et voila mes tables sont liées dans mes traitements (pour info cela permet à l'utilisateur de continuer à travailler et de remplir la base pendant qu'on modifie des etas ou des formulaires..)
Donc avec des tables liées recordset ne fonctionne pas il y a qq chose à faire en plus.
Merci à vous de votre intention
quel est le message d'erreur ? qu'est-ce qui se passe ? car "recordset ne fonctionne pas il y a qq chose à faire en plus" n'est pas un message d'erreur ACCESS (j'ai vérifié :-))
quand tu vas dans Outils/Compléments/Gestionnaire de tables attachées, tu vois tes tables avec l'emplacement des tables sources ou tu as des anomalies ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
quand tu vas dans Outils/Compléments/Gestionnaire de tables attachées, tu vois tes tables avec l'emplacement des tables sources ou tu as des anomalies ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
erreur d'exécution 3219
débogage
Set MaTable = MaDB.OpenRecordset("TEnregist", DB_OPEN_TABLE)
Ca te va comme ereur
débogage
Set MaTable = MaDB.OpenRecordset("TEnregist", DB_OPEN_TABLE)
Ca te va comme ereur
C'est déjà plus clair ! :-)
as-tu fait :
Set MaDB=Currentdb ? (ou autre chose)
MaDB et MaTable sont-ils des objets de type database et recordset, respectivement ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
as-tu fait :
Set MaDB=Currentdb ? (ou autre chose)
MaDB et MaTable sont-ils des objets de type database et recordset, respectivement ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
bonjour à tous,
non pas besoin de "set MaDB = currentdb" car il a écrit :
Set MaTable = MaDB.OpenRecordse("TEnregist",DB_OPEN_TABLE)
Mais tu peux utiliser les tabls liées en VBA grâce à la collection TableDefs.
L'objet TableDef peut aussi gérer les liens aux tables de source de données ISAM et ODBC. Il faut mettre dans ton code les propriétés Connect et SourceTableName et la méthode CreateTableDef de cette activité.
Tu fais appel à la méthode CreateTableDef pour définir dans une variable une référence à la table liée. Ensuite, vous définissez les propriétés Connect et SourceTableName de la variable. La propriété Connect spécifie le type de source de données et le chemin à la source de données spécifique que vous voulez lier.
SourceTableName est le nom de la table que vous liez.
Il faut enfin terminer le processus en ajoutant l'objet TableDef à l colection TableDefs.
Bonne prog...
Guillaume, pour vous servir et accessoirement m'aider aussi
non pas besoin de "set MaDB = currentdb" car il a écrit :
Set MaTable = MaDB.OpenRecordse("TEnregist",DB_OPEN_TABLE)
Mais tu peux utiliser les tabls liées en VBA grâce à la collection TableDefs.
L'objet TableDef peut aussi gérer les liens aux tables de source de données ISAM et ODBC. Il faut mettre dans ton code les propriétés Connect et SourceTableName et la méthode CreateTableDef de cette activité.
Tu fais appel à la méthode CreateTableDef pour définir dans une variable une référence à la table liée. Ensuite, vous définissez les propriétés Connect et SourceTableName de la variable. La propriété Connect spécifie le type de source de données et le chemin à la source de données spécifique que vous voulez lier.
SourceTableName est le nom de la table que vous liez.
Il faut enfin terminer le processus en ajoutant l'objet TableDef à l colection TableDefs.
Bonne prog...
Guillaume, pour vous servir et accessoirement m'aider aussi
oui, mais quelle est la valeur de MaDB ? on ne la voit nulle part, et on y fait référence dans OPENRECORDSET.
j'aimerais savoir pourquoi tu dis qu'il n'est pas besoin de set...=currentdb car je ne vois pas dans openrecordset le moyen qu'a cette action pour trouver de quelle base on parle.
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
j'aimerais savoir pourquoi tu dis qu'il n'est pas besoin de set...=currentdb car je ne vois pas dans openrecordset le moyen qu'a cette action pour trouver de quelle base on parle.
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Bonjour à toi,
oui tu as raison, excuse moi j'ai omis de préciser tout ça.
Alors voilà un exemple pour te satisfaire, pas besoin de spécifier la base pour les tables liées (sauf si tu utilises des éléments de celle çi):
dim rs as recordset
set rs = new ADODB.recordset
rs.open "clients",_
"provider=microsoft.jet.oledb.4.0;"&
"Data source=C:\program files\microsoft office\office\"&_
"Samples\comptoir.mdb;"
.
.
.
rs.close
end sub
Alors heureux?!? lol
Guillaume, pour vous servir et accessoirement m'aider aussi
oui tu as raison, excuse moi j'ai omis de préciser tout ça.
Alors voilà un exemple pour te satisfaire, pas besoin de spécifier la base pour les tables liées (sauf si tu utilises des éléments de celle çi):
dim rs as recordset
set rs = new ADODB.recordset
rs.open "clients",_
"provider=microsoft.jet.oledb.4.0;"&
"Data source=C:\program files\microsoft office\office\"&_
"Samples\comptoir.mdb;"
.
.
.
rs.close
end sub
Alors heureux?!? lol
Guillaume, pour vous servir et accessoirement m'aider aussi
Salut,
merci pour les exemples, mais je ne suis pas le demandeur ! :-)
la demande initiale d'Audrey part de tables qui sont déjà liées, point n'est besoin de redéfinir les liens.
Je voudrais juste qu'elle me confirme les valeurs de MaDB et la déclaration des objets (database et recordset)... :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
merci pour les exemples, mais je ne suis pas le demandeur ! :-)
la demande initiale d'Audrey part de tables qui sont déjà liées, point n'est besoin de redéfinir les liens.
Je voudrais juste qu'elle me confirme les valeurs de MaDB et la déclaration des objets (database et recordset)... :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Tout à l'heure j'ai donné la solution à Audrey, les tables sont déjà liées oui mais il faut établir une connexion en VBA afin d'aller chercher ces données. C'est comme avec un fichier, avant de lire les infos, il faut ouvrir le fichier! lol
Concernant Audrey, ce serait cool si elle pouvait dire si son problème est résolu afin d'éviter de revenir tout le temps sur le sujet mais je pense avoir répondu correctement.
A nous deux, la solution devrait tourner!
Guillaume, pour vous servir et accessoirement m'aider aussi
Concernant Audrey, ce serait cool si elle pouvait dire si son problème est résolu afin d'éviter de revenir tout le temps sur le sujet mais je pense avoir répondu correctement.
A nous deux, la solution devrait tourner!
Guillaume, pour vous servir et accessoirement m'aider aussi
J'ai trouvé !!!
Dans :
Set MaTable = MaDB.OpenRecordset("TEnregist", DB_OPEN_TABLE)
DB_OPEN_TABLE n'existe pas, c'est "dbopentable" qu'il faut mettre, je me disais bien aussi qu'il y avait qq chose qui coinçait visuellement !
Et hop ! :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Dans :
Set MaTable = MaDB.OpenRecordset("TEnregist", DB_OPEN_TABLE)
DB_OPEN_TABLE n'existe pas, c'est "dbopentable" qu'il faut mettre, je me disais bien aussi qu'il y avait qq chose qui coinçait visuellement !
Et hop ! :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"