[VBA + Access] Récupérer tous les champs de mes tables Access...

Récupérer tous les champs de mes tables Access... [VBA + Access] - SQL/NoSQL - Programmation

Marsh Posté le 14-06-2003 à 11:26:46    

Salut!
 
Je voudrais savoir s'il existe une méthode efficace pour récupérer les noms des champs de mes tables Access...
Pour le moment, la seule que je vois est celle ci :
 

Code :
  1. For Each tdfLoop In myDb.TableDefs
  2.     ...
  3.   Next tdfLoop


 
Le problème, c'est que c'est HYPER lent, environ 5 secs par table dans une toute petite base de données (2 petites tables), donc je me demandais si il n'existait pas une autre manière...


Message édité par Yoyo@ le 14-06-2003 à 22:18:03
Reply

Marsh Posté le 14-06-2003 à 11:26:46   

Reply

Marsh Posté le 14-06-2003 à 22:18:26    

:bounce:

Reply

Marsh Posté le 15-06-2003 à 09:33:52    

5 secondes :ouch:
 
Bah essaie ça :
 

sql = "select * from la_table where 1 = 0"
rs.open sql
for each f in rs.fields
   msgbox(f.name)
next

Reply

Marsh Posté le 16-06-2003 à 00:28:14    

MagicBuzz a écrit :

5 secondes :ouch:
 
Bah essaie ça :
 

sql = "select * from la_table where 1 = 0"
rs.open sql
for each f in rs.fields
   msgbox(f.name)
next




 
Pas mal comme idée (je n'ai pas encore pu essayer)! Par conytre, je suppose que ca n'existe que pour des Recordset ADO? :(

Reply

Marsh Posté le 16-06-2003 à 09:12:33    

Bon, bah finalement, j'ai réessayé avec mes tableDefs, et c'est rapide! Je ne comprends pas pourquoi c'était si lent la premiere fois, mais vraiment super lent !
 
Anyway, ca marche now, donc c'est cool ! Merci  :jap:

Reply

Marsh Posté le 16-06-2003 à 13:04:24    

Ben mon exemple s'appuyait sur ADO justement ;)
 
L'avangtage de mon code, c'est qu'il marche quelquesoit la version d'ADO, y compris si tabledefs n'existe pas (ce qui est le cas pour la version du drivers d'Oracle par exemple)

Reply

Marsh Posté le 16-06-2003 à 14:06:25    

MagicBuzz a écrit :

Ben mon exemple s'appuyait sur ADO justement ;)
 
L'avangtage de mon code, c'est qu'il marche quelquesoit la version d'ADO, y compris si tabledefs n'existe pas (ce qui est le cas pour la version du drivers d'Oracle par exemple)


 
Bah en fait, je connais tres tres peu ADO, car j'ai commencé avec Access97 (DAO en foce lol) et y avait pas vraiment de ADO à l'poque, ou pas aussi bien développé qu'aujourd'hui !
 
L'appli que je fais en ce moment doit pouvoir tourner sous 97, mais plus tard, je sais que je migrerai avec un "tout XP" et alors, là, je pense que j"utiliserai de plus en plus ADO... J'ai juste peur qu'il y ait des choses que je ne puisse pas faire avec ! Il faut que j'étudie la question plus en profondeur, c'est certain !
 
Merci,
 
yoyo*

Reply

Marsh Posté le 16-06-2003 à 20:59:53    

Euh... ADO (Active Data Object) existe depuis au moins Windows 3.1 et Access 2 ;)
 
MSJET ou ODBC en font notamment partie ;)
 
Pour info, ADO est un objet qui permet de faire abstraction de la connection à la BDD.
 
Il offre d'un côté une série d'objets utilisables dans le code, et de l'autre une série d'interfaces pour implanter des drivers, qu'ils soit natifs (assez rare), OLE DB, ODBC, MSJET ou encore XML.
 
ADO est distribuer dans un package courrament appelé MDAC (Microsoft Data Access Components) qui contient à la fois les objets ADO et un certain nombre de drivers OLE, MSJET et ODBC.


Message édité par MagicBuzz le 16-06-2003 à 21:03:00
Reply

Marsh Posté le 17-06-2003 à 10:33:15    

Merci pour les précisions !
 
Et DAO, tu pourrais en dire quoi dessus? La différence est qu'il est "obligé" de courir avec les tables présentes dans la base Access? (onglet tables?)
 
pour ma part, je développe une appli assez grosse, avec pas mal de tables linkées ! Et je fais tout ce qui concerne les tables à l'aide de Recordset DAO, à l'aide de docmd.runsql, à l'aide de dlookup principalement... JE passe par pas mal de tables temporaires locales crées à la volée...
 
Je me demande si tout celà sera encore possible en utilisant du ADO?
 
De toute facon, vu que je compte migrer le tout sous SQL Server, je devrai faire des choix, mais ce n'est pas pour maintenant (ca me fait un peu peur lol), et je reposterai plus tard à propos de ca, mais bon, ca ne m'empeche pas de prévoir pour apres ! (en fait, j'ai déja essayé avec SQL Server, en utilisant odbc et linkant des tables directement sur SQL Server, ca marchait (avec quelques modifs sur mon code DAO, par exemple, en incluant des trucs du genre "dbSeeChanges" dans mes recordset, etc...) mais c'était hyper lent :(  
 
Yoyo*

Reply

Marsh Posté le 18-06-2003 à 09:58:16    

:hello:

Reply

Marsh Posté le 18-06-2003 à 09:58:16   

Reply

Marsh Posté le 18-06-2003 à 10:11:33    

DAO ?
 
Bah, c'est Data Access Object
 
Je sais pas trop quelle est la différence avec ADO.
 
 
A priori, oui, ADO supporte les recordset dynamiques, donc ça doit marcher de la même façon (il me semble que DAO est intégré à ADO, qui n'est que le nom de l'objet lui-même, mais je ne suis pas sûr de moi)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed