Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

VBA Accès aux enregistrements d'une table lié

Audrey, le jeudi 20 mars 2003 à 14:42:40
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.
Répondre à Audrey  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 20 mars 2003 à 15:41:47
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"
Répondre à blux

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
teebo, le jeudi 20 mars 2003 à 15:43:02
VB ou VBA aussi...

.  .
\_/
Répondre à teebo

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
teebo, le jeudi 20 mars 2003 à 15:43:23
Et tu es sur(e) de la liaison en question?

.  .
\_/
Répondre à teebo

4


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
adelavar, le jeudi 20 mars 2003 à 15:52:44
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
Répondre à adelavar

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 20 mars 2003 à 16:06:48
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"
Répondre à blux

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
adelavar, le jeudi 20 mars 2003 à 16:32:04
erreur d'exécution 3219
débogage
Set MaTable = MaDB.OpenRecordset("TEnregist", DB_OPEN_TABLE)

Ca te va comme ereur
Répondre à adelavar

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 20 mars 2003 à 16:44:33
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"
Répondre à blux

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
TopperHarley, le vendredi 21 mars 2003 à 09:15:24
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
Répondre à TopperHarley

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 21 mars 2003 à 09:29:52
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"
Répondre à blux

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
TopperHarley, le vendredi 21 mars 2003 à 09:47:53
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
Répondre à TopperHarley

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 21 mars 2003 à 10:03:36
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"
Répondre à blux

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
TopperHarley, le vendredi 21 mars 2003 à 10:16:32
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
Répondre à TopperHarley

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 21 mars 2003 à 10:29:47
et bien chez moi, j'ai des tables liées et la solution suivante me permet de m'en sortir :

Dim Bds As Database
Dim MaTab As Recordset
Set Bds = CurrentDb
Set MaTab = Bds.OpenRecordset("Req_Perso", dbOpenDynaset)

Comme ça, je n'ai pas à décrire les liens en VB ni la version du moteur, il prend ceux qui sont définis et je peux modifier les liens quand je veux !

Et j'accède bien sûr aux données... :-)

A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
TopperHarley, le vendredi 21 mars 2003 à 10:46:59
Mais cela te permet-il de faire des modifications dans ces tables (ajout, suppression ou MAJ) ??
Si cela fonctionne, il est clair que ta solution est bien plus abordable que celle que j'ai donné! Je pensais qu'il était obligatoire de spécifier toutes les options nécessaires afin d'éviter les bugs.

Guillaume, pour vous servir et accessoirement m'aider aussi
Répondre à TopperHarley

15


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 21 mars 2003 à 11:03:22
bien sûr ! sinon, je ne l'aurais pas proposé ! :-)

Volià comment on peut rajouter des lignes (ici, c'est mettre le nom de requêtes qui commencent par RP_ dans la table)

For Each Req In Bds.QueryDefs
If Left(Req.Name, 3) = "RP_" Then
Nom = Req.Properties(0)
Desc = Req.Properties("Description")
On Error Resume Next
With MaTab
.AddNew
!Nom_Req = Nom
!Description = Desc
.Update
.Requery
End With
End If
Next

C'est lors de OPENRECORDSET que l'on dit ce qu'on veut faire (lecture, écriture...), avec l'argument 'type' (dbforwardonly, dbopendynaset...) et les constantes (dbreadonly, dbdenywrite...). L'aide de OPENRECORDSET est bien faite (en ACCESS 97, car en ACCESS 2000, c'est de la m...., hein Kinder ? -private joke-)

Et voilà...

On peut même modifier les liens des tables en dynamique avec .connect, comme ça c'est paramétré dans une table et le jour où on déplace la base, une ligne à mettre à jour, on relance et hop !

Elle est pas belle, la vie ? ;-)

A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
TopperHarley, le vendredi 21 mars 2003 à 11:34:53
mais c'est parfait tout ça!
Merci à Audrey pour avoir posé cette question, ainsi j'ai pu simplifier mon code grâce à une âme généreuse! lol
Merci blux, au plaisir de (re)discuter et de partager du code avec toi! -)

Guillaume, pour vous servir et accessoirement m'aider aussi
Répondre à TopperHarley

17


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 21 mars 2003 à 11:47:17
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"
Répondre à blux

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
adelavar, le vendredi 21 mars 2003 à 13:26:43
je viens de revenir.. Le temps d'analyser tout ce que vous avez mis et de le tester et je vous dit ce que ca donne.
Merci.
Répondre à adelavar

19


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 adelavar, le vendredi 21 mars 2003 à 14:28:43
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
Répondre à adelavar

Résultats pour VBA Accès aux enregistrements d'une table lié

Zone de liste VBA/Access (Résolu) Salut à tous je cherche de l'aide pour VBA/Access en faite je veux à partir d'une zone de liste choisir des elements en cliquant sur l'element choisi , les afficher dans une autre zone de liste et les récuperer. merci à tous www.commentcamarche.net/forum/affich-7555434-zone-de-liste-vba-access
Dépassement de capacité vba access (Résolu) salut à tous, je dévelloppe avec vba access et lorsque j'essaie d'effectuer l'opération suivante j'obtiens un dépassement de capacité: dim h as integer h= 12*3600 j 'ai essayer de mette h en long mais ca ne change rien si je... www.commentcamarche.net/forum/affich-2897775-depassement-de-capacite-vba-access
Vba access pb de connection bdd et pb requète (Résolu) Bonjour, J'ai un problème avec ce code il ne fonctionnent pas. je travail sur access 2007 pour un projet qui sera sur access 2003 et j'utilise un livre sur le vba access 2002. Voilà le code: Private Sub cmdEnreg_Click() Dim db As Connection... www.commentcamarche.net/forum/affich-6596950-vba-access-pb-de-connection-bdd-et-pb-requete

Résultats pour VBA Accès aux enregistrements d'une table lié

Macro vba [ouvrir un fichier] (Résolu)Bonjour. Je travaille ac VBA ACCESS et je souhaite ouvrir un fichier .doc par exemple par l'intermédiaire d'une macro. J'ai trouvé une fonction de macro qui se nomme 'Executer Apllication', cette fonction posséde un seul... www.commentcamarche.net/forum/affich-1294896-macro-vba-ouvrir-un-fichier
Aide VBA excel (Résolu)Bonjour, Je suis nouveau en VBA Excel et j'ai un travail à faire. Je vous prie de me donner un coup de main SVP. Je veux créer (en VBA EXCEL) un tableau avec 5 champs. Les 2 premiers champs je les rentres à la main mais les autres champs... www.commentcamarche.net/forum/affich-3019981-aide-vba-excel
[VBA Excel] if variable = vide than... (Résolu)Bonjour, je fais un programme VBA avec un tableau contenant des références et j'aimerai faire une recherche de référence dans ce tableau. Mais la référence donné n'est pas forcément dans le tableau. J'ai donc fait une zone de texte pour... www.commentcamarche.net/forum/affich-6759993-vba-excel-if-variable-vide-than