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

cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 28 mai 2010 à 15:24
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 - 31 mai 2010 à 09:13
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

c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
29 mai 2010 à 02:26
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
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
30 mai 2010 à 09:35
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
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
31 mai 2010 à 09:13
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
0
Rejoignez-nous