cs_Mariotte42
Messages postés24Date d'inscriptionlundi 25 février 2002StatutMembreDernière intervention22 janvier 2003
-
24 nov. 2002 à 18:30
cs_Mariotte42
Messages postés24Date d'inscriptionlundi 25 février 2002StatutMembreDernière intervention22 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
miate
Messages postés16Date d'inscriptionmercredi 20 novembre 2002StatutMembreDernière intervention24 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
cs_Mariotte42
Messages postés24Date d'inscriptionlundi 25 février 2002StatutMembreDernière intervention22 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