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
|
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
|
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
|
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
|
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 1Ce 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
|
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 |
|
|
|
|
|
|