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

cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 20 mai 2006 à 10:00 - Dernière réponse : cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention
- 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
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 20 mai 2006 à 12:11
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de Renfield
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 20 mai 2006 à 12:55
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.