VB6 openshema

Résolu
Signaler
Messages postés
44
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
30 août 2010
-
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
-
Salut tout le monde,

Voici mon code, Le probléme c'est que j'obtient ts les champs de toute les tables alors que je veux seulement les champs de la table que je vais sélectionné dans cbxBase1

Private Sub cmdOuvrir1_Click(Index As Integer)
cmOuvrir.Filter = ".mdb|*.mdb"
cmOuvrir.ShowOpen
cmOuvrir.Flags = &H1000
If cmOuvrir.FileName <> "" Then
       txtBase1 = cmOuvrir.FileName
End If
Dim cnx As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim rsC As ADODB.Recordset
Set cnx = New ADODB.Connection
cnx.Provider = "Microsoft.Jet.OLEDB.4.0"
cnx.Open (txtBase1)
Set rsT = New ADODB.Recordset
Set rsC = New ADODB.Recordset  'jusqu'à la ca marche


Set rsT = cnx.OpenSchema(adSchemaTables)
Do Until rsT.EOF
    cbxBase1.AddItem rsT!TABLE_NAME ' je mets mets tables dans ma combobox cbxBase1
    NomTab = rsT.Fields("TABLE_NAME")
    Set rsC = cnx.OpenSchema(adSchemaColumns, Array(Empty, Empty, NomTab, Empty))
    Do Until rsC.EOF
        lstBase1.AddItem rsC!COLUMN_NAME
        rsC.MoveNext
    Loop
    rsC.Close
    rsT.MoveNext
Loop
rsT.Close
End Sub





GIRAUD MARC

10 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
en gros, tu liste tes tables, et pour chaque table, tu ajoutes la liste des champs...

tu n'a pas mis le coté interactif de la chose,  a savoir qu'un click sur une table du combo doit afficher la liste de ses champs...

essaies avec ce genre de choses, plutot ...

Private Sub cbxBase1_Click()
Dim cnx As ADODB.Connection
Dim rsC As ADODB.Recordset
   Set cnx = New ADODB.Connection
   cnx.Provider = "Microsoft.Jet.OLEDB.4.0"
   cnx.Open txtBase1.Text

   Set rsC = cnx.OpenSchema(adSchemaColumns, Array(Empty, Empty, cbxBase1.Text, Empty))
   lstBase1.Clear
   Do Until rsC.EOF
       lstBase1.AddItem rsC!COLUMN_NAME
       rsC.MoveNext
   Loop
   rsC.Close
   cnx.Close
End Sub<hr />
Private Sub cmdOuvrir1_Click(Index As Integer)
Dim cnx As ADODB.Connection
Dim rsT As ADODB.Recordset

   cmOuvrir.Filter = ".mdb|*.mdb"
   cmOuvrir.Flags = &H1000
   cmOuvrir.ShowOpen
   
   If cmOuvrir.FileName <> "" Then
       txtBase1.Text = cmOuvrir.FileName
       
       Set cnx = New ADODB.Connection
       cnx.Provider = "Microsoft.Jet.OLEDB.4.0"
       cnx.Open txtBase1.Text
       
       Set rsT = cnx.OpenSchema(adSchemaTables)
       cbxBase1.Clear
       Do Until rsT.EOF
           cbxBase1.AddItem rsT!TABLE_NAME
           rsT.MoveNext
       Loop
       rsT.Close
       cnx.Close
   End If
End Sub , ----
By Renfield

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
A vue de nez (moi j'ai mis un controle "liste")

Private Sub listeTables_Click()
    'on efface les champs précédents
    listeCat.Clear
    Set rsT = cnx.OpenSchema(adSchemaColumns)
    While Not rsT.EOF
        If rsT!TABLE_NAME = listeTables.Text Then listeCat.AddItem rsT!COLUMN_NAME
        rsT.MoveNext
    Wend
    listeCat.ListIndex = -1
End Sub
Messages postés
44
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
30 août 2010

dsl mais ca marche pas quelqu'un a une otre soluce
 merci

GIRAUD MARC
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
c'est NORMAL ^^

Set rsT = Ma liste de tables
Pour chaque table de rsT
    ajouter le nom de la table dans cbxBase1
    Récuperer la liste des champs de cette table
    Pour chaque champ
        ajouter son nom dans  lstBase1
    Fin
Fin

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
44
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
30 août 2010

est codé ca donne quoi parce que j'ai essayé plein de truc mai ca marché pas

merci d'avance renfield

GIRAUD MARC
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
NB. le pseudo code ci dessus, c'est ce que a codé, et qui est erroné

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
44
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
30 août 2010

merci jvé faire comme ca sinon j'essaie de faire le projet otremen

GIRAUD MARC
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
si si ca marche
d'abord tu ouvres toutes tes tables dans une liste
sub ouvrir_BD
set rst = cnx.OpenSchema(adSchemaTables)
        Do Until rst.EOF
            If rst!TABLE_TYPE = "TABLE" Then lisTables.AddItem rst!TABLE_NAME
            rst.MoveNext
        Loop
        rst.Close

ensuite en cliquant sur chaque table, tu as ses champs qui apparaissent, avec le code déjà indiqué, du moins si j'ai bien compris ce que tu veux
Messages postés
44
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
30 août 2010

merci reznfield ca marche enfin je croi que t le meilleur

GIRAUD MARC
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Ben voilà un petit moment que je cherche, et c'est pile-poil ce qu'il me fallait....
Merci Renfield...Le top...

A+
Exploreur

 Linux a un noyau, Windows un pépin