OVH Cloud OVH Cloud

Nom des champs

1 réponse
Avatar
Nicolas
Bonjour,

J'acc=E8de =E0 une source de donn=E9es odbc via ADODB et je=20
souhaiterais r=E9cup=E9rer les nom des champs d'une table.

Je me connecte =E0 ma source de donn=E9es et r=E9cup=E8re un=20
enregistrement de la mani=E8re suivante :

Dim adoCnx As ADODB.Connection
Dim adoRs As ADODB.Recordset
Set adoCnx =3D New ADODB.Connection
Set adoRs =3D New ADODB.Recordset
adoCnx.ConnectionString =3D "DSN=3DBIJOUX_SRC"
adoCnx.Open
adoRs.ActiveConnection =3D adoCnx
adoRs.Source =3D "SELECT GL_INTITULE FROM F_GLOSSAIRE"
adoRs.Open
Do Until adoRs.EOF
MsgBox adoRs("GL_INTITULE")
adoRs.MoveNext
Loop
adoRs.Close
adoCnx.Close

Comment faire pour les noms des champs ?

Merci d'avance

Nicolas

1 réponse

Avatar
Zoury
Salut Nicolas! :O)

Tu as ADOX qui te permet cela...
http://groups.google.com/groups?threadm=uE7K7bJwCHA.2668%40TK2MSFTNGP09

Tu peux aussi probablement faire une requête sur les tables systèmes... (je
ne connais pas la syntaxe, tu n'as pas spécifier sur quel BD tu travailles,
le message précédent montre un exemple pour SQL Server..)

Tu peux également, faire une requête comme tu l'as fait et boucler la
collection de Fields du recordset reçu... mais personnelement cette
technique me donne des remors de conscience.. ;O)
'***
' Ajouter la référence à Microsoft ActiveX Data Objects 2.7 Library
' Utilise la base de données NorthWind d'SQL Server..
' Module1
Option Explicit

Private Sub Main()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field

Set cn = New ADODB.Connection
Call cn.Open("Provider=SQLOLEDB.1;Persist Security Infoúlse;User
ID=sa;Initial Catalog=Northwind;Data Source=GCODEV")

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient

' Cette nous renvoit la structure de la table sans aucune donnée...
Call rs.Open("select * from Customers where 1 = 0", _
cn, adOpenForwardOnly, adLockReadOnly)

' Imprime les noms de champs..
For Each fld In rs.Fields
Debug.Print fld.Name
Next fld

' Ferme nos objets
rs.Close
cn.Close

End Sub
'***