VB6 openshema

Résolu
marcgiraud Messages postés 44 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 30 août 2010 - 31 mai 2007 à 10:51
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 15 nov. 2007 à 23:35
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 mai 2007 à 11:20
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
3
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
31 mai 2007 à 11:05
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
0
marcgiraud Messages postés 44 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 30 août 2010
31 mai 2007 à 11:12
dsl mais ca marche pas quelqu'un a une otre soluce
 merci

GIRAUD MARC
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 mai 2007 à 11:15
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
0

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

Posez votre question
marcgiraud Messages postés 44 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 30 août 2010
31 mai 2007 à 11:17
est codé ca donne quoi parce que j'ai essayé plein de truc mai ca marché pas

merci d'avance renfield

GIRAUD MARC
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 mai 2007 à 11:20
NB. le pseudo code ci dessus, c'est ce que a codé, et qui est erroné

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
marcgiraud Messages postés 44 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 30 août 2010
31 mai 2007 à 11:21
merci jvé faire comme ca sinon j'essaie de faire le projet otremen

GIRAUD MARC
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
31 mai 2007 à 11:25
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
0
marcgiraud Messages postés 44 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 30 août 2010
31 mai 2007 à 11:25
merci reznfield ca marche enfin je croi que t le meilleur

GIRAUD MARC
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
15 nov. 2007 à 23:35
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

 
0
Rejoignez-nous