[VBS] comment lister les tables d'une base access [Résolu]

Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- - Dernière réponse : cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 20 mai 2006 à 12:55
 Bonjour à tous....J'ai, déjà, posté cette requête, mais n'ayant eu aucune réponse, j'espère qu'avec <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>

cette relance, je pourrais obtenir un petit aiguillage pour mon problème.

Je suis bloqué dès le début de mon projet.
Lecture de toutes les tables d'une base .mdb (dates début-fin en paramètre)
pour y extraire des messages issus de l'exploitation
batchs  dans laquelle les jors sont sauvegardés.  

 En VBS, jusqu'à présent, j'utilisais la synthaxe:

Const PathOut   = "d:\Oxauser"
MaBaseJor = PathOut & "JOB_DIA7.MDB"
MaTable = "JOB"
MaRequete = "SELECT JOBID,AMJ FROM " & MaTable & " ORDER BY AMJ"
Set Db = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")
Db.Open  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MaBaseJor
Rs.Open MaRequete ,Db
Do While Not Rs.EOF
' Actions
Rs.MoveNext
Loop
Rs.Close
....

Mon nouveau problème:
Dans une base Access, exemple JOR.mdb, je n'arrive pas à trouver
la synthaxe pour lister toutes les tables.
Je souhaiterai ouvrir toutes les tables "J-????-aammjj_????", une par une (il y a # 400),
pour y extraire certaines informations.

Dans l'aide d'Access, il y a la notion de AllTables mais en VB du style,
    'Set dbs = Application.CurrentData
    ' Recherche les objets AccessObject ouverts
    ' dans la collection AllTables.
    For Each obj In db.AllTables
        If obj.IsLoaded = TRUE then
            ' Affiche le nom de l'objet.
            MsgBox obj.Name
        End If
    Next 'obj

je n'arrive pas à transposer ce code VB en VBS.
Donc, si quelqu'un, scriptant en VBS, a des solutions.
Merci.
jean-marc
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
60
3
Merci
Il faut faire un OpenSchema :


const adSchemaTables = &h14

Set Db = CreateObject("ADODB.Connection")

Db.Open  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MaBaseJor

Set RS = Db.OpenSchema(adSchemaTables)

Do Until RS.EOF

    Msgbox RS.Fields("TABLE_NAME").Value

    RS.MoveNext

Loop

il ne te reste plus qu'a ignorer les tables 'MSys*'

Renfield
Admin CodeS-SourceS- MVP Visual Basic

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 89 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
26
0
Merci
 Bonjour à tous....

Merci Renfield,
Cela fait presqu'un mois que je cherchais (AllTables) + ou -, je ne connaissais pas "OpenSchema".
Via exalead, je viens de faire une recherche.
résultat:
http://www.laltruiste.com/coursado/constante_schemaenum.html' target='_blank'>http://www.laltruiste.com/document.php?url=http://www.laltruiste.com/coursado/constante_schemaenum.html
j'aurai dü y penser... à l'altruiste.

Encore merci et bonnes journée de prog.
Je n'ai plus qu'à ré-ouvrir mon projet.

jean-marc
Commenter la réponse de cs_JMO

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.