Liste bd et datagrid

Messages postés
24
Date d'inscription
lundi 25 février 2002
Statut
Membre
Dernière intervention
22 janvier 2003
-
Messages postés
24
Date d'inscription
lundi 25 février 2002
Statut
Membre
Dernière intervention
22 janvier 2003
-
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

Messages postés
16
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
24 mai 2006

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
Messages postés
24
Date d'inscription
lundi 25 février 2002
Statut
Membre
Dernière intervention
22 janvier 2003

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
Messages postés
26
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
20 mars 2009
3
Viviane
Messages postés
24
Date d'inscription
lundi 25 février 2002
Statut
Membre
Dernière intervention
22 janvier 2003

bonjour
Non pas moyen de trouver le problème si tu trouve pense a moi!
Merci eric