Lister tables, requetes ... d'une base mdb access

Résolu
nicollin7 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 juillet 2010 - 10 mai 2010 à 10:43
nicollin7 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 juillet 2010 - 28 mai 2010 à 14:54
Bonjour à tous, je tente depuis un moment, de faire un programme permettant de pouvoir compter le nombre de "table", "queries", "macro" contenu dans mes bases de données,

je m'explique, j'aimerais pouvoir savoir qu'il y a dans X.mdb 9table, 6queries, 3 formulaire sans devoir l'ouvrir par office.

j'ai cherché la possibilité de le faire avec le fso mais en vin je tourne en rond.

si une ame charitable pouvais me dire quels sont peut etre les differents appel ou la maniere fe faire autrement.

D'avance Merci,
Nicolas

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2010 à 11:29
Salut
Pour voir ces objets, il te faut activer l'affichage des objets système sous Access :
Menu Options, onglet Affichage, case à cocher "Objets système"
Tu verras ainsi la table MSysObjects qu'il te suffira d'interroger.
http://cc.bingj.com/cache.aspx?q=msysobjects+type&d=4677859424535927&mkt=fr-FR&setlang=fr-FR&w=694a29c3,233001cc

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2010 à 11:32
Désolé, le lien merdouille.
Voici le contenu :
Requêtes:
SELECT MSysObjects.Name FROM MsysObjects WHERE (Left$([Name],1)<>"~") AND (MSysObjects.Type)=5 ORDER BY MSysObjects.Name;

Formuliares:
SELECT MSysObjects.Name FROM MsysObjects WHERE (Left$([Name],1)<>"~") AND (MSysObjects.Type)=-32768 ORDER BY MSysObjects.Name;

Tables:
SELECT MSysObjects.Name FROM MsysObjects WHERE (Left$([Name],1)<>"~") AND (Left$([Name],4) <> "Msys") AND (MSysObjects.Type)=1 ORDER BY MSysObjects.Name;

États:
SELECT MSysObjects.Name FROM MsysObjects WHERE (Left$([Name],1)<>"~") AND (MSysObjects.Type)= -32764 ORDER BY MSysObjects.Name;

Modules:
SELECT MSysObjects.Name FROM MsysObjects WHERE (Left$([Name],1)<>"~") AND (MSysObjects.Type)= -32761 ORDER BY MSysObjects.Name;

Macros:
SELECT MSysObjects.Name FROM MsysObjects WHERE (Left$([Name],1)<>"~") AND (MSysObjects.Type)= -32766 ORDER BY MSysObjects.Name;

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2010 à 11:50
PS : Il faudra que, dans ta base de données, tu donnes accès en lecture de cette table à l'utilisateur : menu Outils, Sécurité, Autorisations d'accès
+ bien choisir le CursorType dans ton RecordSet, exemple :

    Dim maConn As ADODB.Connection
    Dim monRS As ADODB.Recordset
    Dim sSQL As String
    
    On Error GoTo 0
    
    Set maConn = New ADODB.Connection
    Set monRS = New ADODB.Recordset
    
    With maConn
        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd1.mdb;Persist Security Info=False"
        .Open
    End With
    
    sSQL = "Select * From MsysObjects"
    monRS.Open sSQL, maConn, adOpenStatic, adLockOptimistic
    
    With monRS
        If .RecordCount > 0 Then
            .MoveFirst
            Do While Not .EOF
                Debug.Print .Fields("Name").Value
                .MoveNext
            Loop
        End If
    End With
    
    
    On Error Resume Next
    monRS.Close
    maConn.Close
    Set monRS = Nothing
    Set maConn = Nothing

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
nicollin7 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 juillet 2010
10 mai 2010 à 11:55
Merci beaucoup Jack, ton aide m'est très précieuse, je vais de ce pas essayer de mettre en pratique tout ceci et analyser pas a pas le code

si j'arrive a le faire fonctionner j'aurai mis plusieurs jours a savoir qu'est ce qui se trouve dans ma mdb, a la place de l'ouvrir manuellement.

Le vb en herbe te remercie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2010 à 12:23
De rien.
Afin que d'autres puisse trouver cette solution à cette question posée de temps en temps, je me suis permis de modifier le titre de ta question.
0
nicollin7 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 juillet 2010
17 mai 2010 à 16:02
pourrais je te demander, si tu voudrais bien me faire un exemple tout simple d'un des differents appel que tu m'a donné précédemment avec 1-2 petite notation, je n'arrive pas a les mettre en place. se serais très aimable de ta part.
D'avance merci,
Nicolas
0
nicollin7 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 juillet 2010
17 mai 2010 à 16:03
PS: j'ai bien activer la lecture et la visibilité des table cachées dans le ms access
0
nicollin7 Messages postés 7 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 6 juillet 2010
28 mai 2010 à 14:54
Bonjour, je voudrais savoir si on peux avoir les résultats sans devoir aller activer pour chaque base de donnée que je possède l'option pour voir la table msysaccessobject.

c'est pas tres pratique de devoir activer pour chaque base de donnée.
d'avance merci,
Nicolas
0
Rejoignez-nous