marcgiraud
Messages postés44Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention30 août 2010
-
31 mai 2007 à 10:51
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
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
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 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