OVH Cloud OVH Cloud

Export via ADO - TXT File

3 réponses
Avatar
Ingrid
Salut tout le monde,

J'exporte un fichier txt (ci-joint le code) avec ado, mais=20
je n'arrive pas =E0 recuperer les titres. Ci-dessous le=20
code. Comment faire pour exporter les titres des champs ?

code:
rc.open "Select Nom, Prenom From Table", ct
Open "C:\fichier.txt" For Output as #1
Do Until Rc.Eof
Print #1, Rc!Nom & " " & Rc!Prenom
Rc.MoveNext
Loop



Merci d'avance

Bisous
Ingrid

3 réponses

Avatar
il existe des mécanismes qui permette de lire les champ
d'une table.
Pour sql serveur voir les procedure stocké étendue qui
commence par sp_

Il suffit donc de faire 1 1ere passe avec se type de
mécanisme puis une seconde avec le select ....
-----Message d'origine-----
Salut tout le monde,

J'exporte un fichier txt (ci-joint le code) avec ado,


mais
je n'arrive pas à recuperer les titres. Ci-dessous le
code. Comment faire pour exporter les titres des champs ?

code:
rc.open "Select Nom, Prenom From Table", ct
Open "C:fichier.txt" For Output as #1
Do Until Rc.Eof
Print #1, Rc!Nom & " " & Rc!Prenom
Rc.MoveNext
Loop



Merci d'avance

Bisous
Ingrid


.



Avatar
Zoury
Salut à vous 2!

il existe des mécanismes qui permette de lire les champ
d'une table.
Pour sql serveur voir les procedure stocké étendue qui


< commence par sp_

Yep, elle se nomme sp_columns..

Il suffit donc de faire 1 1ere passe avec se type de
mécanisme puis une seconde avec le select ....



Pas nécessaire dans ce cas ci... Le Recordset offre une collection de type
Field qui permet d'obtenir les informations sur les colonnes dans ce
dernier.. Il te suffit de boucler la collection de Fields une fois afin
d'écrire tes headers avant les données

Ex :
'***
' référence : Microsoft ActiveX Data Objects 2.X 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
Dim sLine As String
Dim hFile As String
Const COL_WIDTH As Long = 50 ' 50 caractères par colonne

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
Call rs.Open("select CompanyName, ContactName from Customers", cn,
adOpenForwardOnly, adLockReadOnly)

' Créer l'entête
For Each fld In rs.Fields
sLine = sLine & PadLeft(fld.Name, COL_WIDTH)
Next fld

' On ouvre le fichier
hFile = FreeFile
Open "C:fichier.txt" For Output As #hFile

Print #hFile, String$(COL_WIDTH * rs.Fields.Count, "-")
Print #hFile, sLine
Print #hFile, String$(COL_WIDTH * rs.Fields.Count, "-")
Do Until rs.EOF
sLine = ""
For Each fld In rs.Fields
sLine = sLine & PadLeft(fld.Value, COL_WIDTH)
Next fld
Print #hFile, sLine
Call rs.MoveNext
Loop

' Ferme nos objets
Close #hFile
rs.Close
cn.Close

End Sub

Private Function PadLeft(ByRef sText As String, ByRef lLength As Long) As
String
PadLeft = Left$(sText & Space$(lLength), lLength)
End Function
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Ingrid
Merci à vous 2.
A+

-----Message d'origine-----
Salut à vous 2!

il existe des mécanismes qui permette de lire les champ
d'une table.
Pour sql serveur voir les procedure stocké étendue qui


< commence par sp_

Yep, elle se nomme sp_columns..

Il suffit donc de faire 1 1ere passe avec se type de
mécanisme puis une seconde avec le select ....



Pas nécessaire dans ce cas ci... Le Recordset offre une


collection de type
Field qui permet d'obtenir les informations sur les


colonnes dans ce
dernier.. Il te suffit de boucler la collection de Fields


une fois afin
d'écrire tes headers avant les données

Ex :
'***
' référence : Microsoft ActiveX Data Objects 2.X 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
Dim sLine As String
Dim hFile As String
Const COL_WIDTH As Long = 50 ' 50 caractères par


colonne

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
Call rs.Open("select CompanyName, ContactName from


Customers", cn,
adOpenForwardOnly, adLockReadOnly)

' Créer l'entête
For Each fld In rs.Fields
sLine = sLine & PadLeft(fld.Name, COL_WIDTH)
Next fld

' On ouvre le fichier
hFile = FreeFile
Open "C:fichier.txt" For Output As #hFile

Print #hFile, String$(COL_WIDTH * rs.Fields.Count, "-


")
Print #hFile, sLine
Print #hFile, String$(COL_WIDTH * rs.Fields.Count, "-


")
Do Until rs.EOF
sLine = ""
For Each fld In rs.Fields
sLine = sLine & PadLeft(fld.Value, COL_WIDTH)
Next fld
Print #hFile, sLine
Call rs.MoveNext
Loop

' Ferme nos objets
Close #hFile
rs.Close
cn.Close

End Sub

Private Function PadLeft(ByRef sText As String, ByRef


lLength As Long) As
String
PadLeft = Left$(sText & Space$(lLength), lLength)
End Function
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.