Liste bd et datagrid

cs_Mariotte42 Messages postés 24 Date d'inscription lundi 25 février 2002 Statut Membre Dernière intervention 22 janvier 2003 - 24 nov. 2002 à 18:30
cs_Mariotte42 Messages postés 24 Date d'inscription lundi 25 février 2002 Statut Membre Dernière intervention 22 janvier 2003 - 22 janv. 2003 à 19:53
Bonjour
Avec visual basic 6, je voudrai sur un form afficher dans un unique datagrid les champs d'une basse de données access. Les tables de ma base sont affichées dans une liste. Est-il possible par exemple de selectionner dans la liste une table et d'afficher les champs de cette table dans le datagrid?
Merci d'avance
ERIC

4 réponses

miate Messages postés 16 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2006
25 nov. 2002 à 09:41
Tu peux normalement tout afficher

dans un premier temps tu reference ton projet avec
Microsoft activeX Data Object 2.5 Library (ou ultérieur).

Dim Cnx as Adodb.Connection
Dim Rs as Adodb.Recordset
Dim Fld as Adodb.Field
Dim Prop as Adodb.Property

Connexion à la Base :

Set Cnx=New Adodb.Connection
si tu as Access 98
Cnx.Provider="Microsoft.Jet.OLEDB.3.51"
si tu as Access 2000
Cnx.Provider="Microsoft.Jet.OLEDB.4.0"

Cnx.Open "NomBase","Admin","Pwd"

Set Rs = New Adodb.Recordset

Pour Obtenir toutes tables et vues
Set Rs=Cnx.OpenSchema(adSchemaTables)
le Nom est dans le Champ Rs!TABLE_NAME
tu peux afficher cela dans ta liste grace à
Do Until Rs.Eof
List1.AddItem Rs!TABLE_NAME
Rs.MoveNext
Loop
Rs.Close

Pour tous les champs de la Table en question
Set Rs=Cnx.OpenSchema(adSchemaColumns,
Array(Empty,Empty,NomTbl))

Le NomTbl etant le nom de la table selectionné dans ta liste. Le nom du champ etant dans
Rs!COLUMN_NAME.

tu l'affiche dans ta grille soit au moyen d'une boucle
soit en affectant le recordset à la valeur DataSource de ta grille

Set Grid1.DataSource=Rs
Dans ce cas tu auras toutes les propriétés des champs en plus du Nom.

Pour les Index dans la table.

Set Rs=Cnx.OpenSchema(adSchemaIndexes,
Array(Empty,Empty,Empty,Empty,NomTbl))

Le nom de l'index etant dans
Rs!INDEX_NAME. Tu peux tester le Champ
Rs!PRIMARY_KEY (True/False) pour la Clé Primaire.

tu affiche cela dans ta grille comme les champs.

Pour obtenir et afficher les Propriétés de la Base si tu en avait besoin ex:
For Each Prop in Cnx.Properties
List2.Additem Prop.Name & " = " & Prop.Value
Next

Propriétés de la table.
Set Rs=Cnx.OpenSchema(adSchemaTables,
Array(Empty,Empty,NomTbl))
For Each Fld in Rs.Fields
List2.Additem Fld.Name & " = " & Fld.Value
Next

Propriétés d'un champ.
Set Rs=Cnx.OpenSchema(adSchemaColumns,
Array(Empty,Empty,NomTbl,NomChamp))
For Each Fld in Rs.Fields
List2.Additem Fld.Name & " = " & Fld.Value
Next

Propriétés d'un Index.
Set Rs=Cnx.OpenSchema(adSchemaIndexes,
Array(Empty,Empty,NomIDX))
For Each Fld in Rs.Fields
List2.Additem Fld.Name & " = " & Fld.Value
Next

En esperant avoir répondu à ta demande
0
cs_Mariotte42 Messages postés 24 Date d'inscription lundi 25 février 2002 Statut Membre Dernière intervention 22 janvier 2003
30 nov. 2002 à 16:36
Salut
Merçi pour ta reponse, j'ai essayé avec ton code j'ai progressé mais j'ai un problème sur la ligne "Set Grid1.DataSource=Rs" Le message suivant apparais "le jeu d'enregistrement ne peut pas prendre en compte les signets".Je pense qu'il y a quelque choses que je n'est pas compris dans ton code, je debut et tous n'est pas simple pour moi!!
J'utilise microsft activeX Data Object 2 lirary est-ce a cause de ça?
Si tu peut m'aider ce sera avec plaisir.
Merci d' avance
Eric
0
cs_Viviane Messages postés 26 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 20 mars 2009 3
17 janv. 2003 à 10:04
Viviane
0
cs_Mariotte42 Messages postés 24 Date d'inscription lundi 25 février 2002 Statut Membre Dernière intervention 22 janvier 2003
22 janv. 2003 à 19:53
bonjour
Non pas moyen de trouver le problème si tu trouve pense a moi!
Merci eric
0
Rejoignez-nous