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

Signaler
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
 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

2 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 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