Récupérer les requêtes de ma base ACCESS

Signaler
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
-
bonjour
avec se code je récupere des tables de ma base ACCESS pour afficher dans une listbox.
Private Sub cmd_import_Click()
'Bouton permettant d'importer les fichiers
On Error Resume Next
Nb_Rec_Total = 0

Lst_Tables.Clear
ComDlg.InitDir = App.Path
ComDlg.ShowOpen
If ComDlg.FileName <> "" Then
LstTableArr.Clear
Cmd_Suiv.Visible = True
Lst_Tables.Clear
lstchamp.Clear
ext = Right(ComDlg.FileName, Len(ComDlg.FileName) - Len(ComDlg.FileName) + 3)
        
        If cnn.State = 1 Then cnn.Close
        
        cnn.Open Connection_Base(ext, ComDlg.FileName, ComDlg.FileTitle)
        If Err.Number = -2147467259 Then cnn.Open Connection_Base_Fox(ext, ComDlg.FileName, ComDlg.FileTitle)

        Set RS = cnn.OpenSchema(adSchemaTables)
        If ext "xls" Or ext "XLS" Then
        
       Do While Not RS.EOF
            Lst_Tables.AddItem (RS!table_name)
            RS.MoveNext
        Loo
Else
         Do While Not RS.EOF
            If RS!table_type = "TABLE" Then Lst_Tables.AddItem (RS!table_name)
            RS.MoveNext
        Loop
 End If
Lst_Tables.Text = Lst_Tables.List(0)
       If RS.State = 1 Then RS.Close
        Lst_Tables.Refresh
      
        Fch_Nom.Text = ComDlg.FileTitle
        If ext "mdb" Or ext "MDB" Then Opt_Type(1).Value = True
        
            Fch_Nom.Text = Left(ComDlg.FileName, Len(ComDlg.FileName) - Len(ComDlg.FileTitle))
        End If
End If
End Sub

Comment faire pour récupérer les requêtes de ma base pour les afficher avec les tables dans ma listbox
merci
petchy

3 réponses

Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
Voici un exemple à adapter. Il s'agit d'un module ACCESS
Le nom des requetes en mis en table

Function listerequete()
Set T_liste = dbs.OpenRecordset("Liste_requete", , dbAppendOnly)
For Each qdf In Dbs_remote.QueryDefs ' (dbs_remote est ma base externe)
If Left$(qdf.Name, 1) <> "~" Then
T_liste.AddNew
T_liste![nom] = qdf.Name
T_liste.Update
End If
Next qdf
End Function

Une autre possibilité est de rechercher les noms dans la table MsysObjects.
Les requetes sont de type 5
Penser à éliminer les noms commençant par ~ (ce sont les requetes supprimées)

bonne journée
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
bonjour
merci pour ton code,mais je n'arrive pas à l'adapter
j'ai essayer de remplacer
table_name --> qdf.Name ,mais il n'y à plus rien qui s'affiche dans la listbox.
petchy
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
En examinant ton code le test ext="xls" me surprend. Cette extention désigne un classeur excel.

Dans mon esprit l'adapté était du genre :
Dans mon exemple la base à explorer est considérée ouverte.Si ce n'est pas le cas il faut rajouter en tête :
Set Dbs_remote = OpenDatabase("chemin de la base")

De même la table "liste_requete" est censée existée avec un champ nommé Nom.

je crée une table que j'utilise dans un formulaire. Je ne charge pas directement le formulaire.

C'est une fonction à appeler dans ton sub

Bonne journée