OVH Cloud OVH Cloud

Ecriture dans un Fichier

1 réponse
Avatar
mj
Bonjour à tous,

Voilà mon souci :
je balaye une table et j'insère les données dans un fichier. Ce fichier sera
traiter par la suite par une autre appli il doit donc avoir une structure
rigoureuse.

mon problème est que à chaque fois que j'ajoute une ligne à mon fichier :
Print #1, CStr(rstselect![ESTD]) (insertion de ma ligne provenant d'un
recordset) VB ajoute l'information mais saute aussi une ligne.

en définitif j'obtiens mes 5000 lignes de données + un retour à la ligne non
désiré

Comment éviter qu'il saute cette dernière ligne car mon fichier ne doit pas
contenir de saut de ligne à la fin.
voici mon code :

'Write dans le fichier
Open Find_My_Rep & "ESTD\" & filename & datefileextraction & ".txt" For
Output Access Write As #1


REQStr = "select ESTD from " & tablename & ";"
Set rstselect = CurrentDb.OpenRecordset(REQStr)

If rstselect.RecordCount > 0 Then
rstselect.MoveLast
rstselect.MoveFirst
Do While rstselect.EOF = False

Print #1, CStr(rstselect![ESTD])

rstselect.MoveNext
Loop
Else
End If
rstselect.Close

Close #1

merci de votre aide
mj

1 réponse

Avatar
pas-de-spam>Wanadoo.fr
Bonjour


j'utilise une autre méthode:
a+ christophe


Open Find_My_Rep & "ESTD" & filename & datefileextraction & ".txt" For
binary As #1

REQStr = "select ESTD from " & tablename & ";"
Set rstselect = CurrentDb.OpenRecordset(REQStr)

If not(rstselect.bof and rstselect.eof) Then

rstselect.movefirst
do while not rst.eof

ligne$=CStr(rstselect![ESTD])
ecritligne 1, ligne$
rstselect.movenext
loop

end if




Public Function EcritLigne(nfich As Integer, ligne As String)
Dim count&
Dim a$
Dim i&

count& = Len(ligne)
For i& = 0 To count&
Next i&
a$ = Chr(13) + Chr(10)
Put #nfich, , ligne
Put #nfich, , a$

End Function
Public Function lituneligne(nfich As Integer) As String
Dim ligne$
Dim car$

ligne$ = ""
Do While Not (EOF(nfich) Or car$ = Chr(10))
car$ = Input(1, #nfich)
If car$ <> Chr(13) And car$ <> Chr(10) Then
ligne$ = ligne$ & car$
End If
Loop

lituneligne = ligne$
End Function




mj a écrit :
> Bonjour à tous,
>
> Voilà mon souci :
> je balaye une table et j'insère les données dans un fichier. Ce
fichier sera
> traiter par la suite par une autre appli il doit donc avoir une
structure
> rigoureuse.
>
> mon problème est que à chaque fois que j'ajoute une ligne à mon
fichier :
> Print #1, CStr(rstselect![ESTD]) (insertion de ma ligne provenant d'un
> recordset) VB ajoute l'information mais saute aussi une ligne.
>
> en définitif j'obtiens mes 5000 lignes de données + un retour à la
ligne non
> désiré
>
> Comment éviter qu'il saute cette dernière ligne car mon fichier ne
doit pas
> contenir de saut de ligne à la fin.
> voici mon code :
>
> 'Write dans le fichier
> Open Find_My_Rep & "ESTD" & filename & datefileextraction & ".txt" For
> Output Access Write As #1
>
>
> REQStr = "select ESTD from " & tablename & ";"
> Set rstselect = CurrentDb.OpenRecordset(REQStr)
>
> If rstselect.RecordCount > 0 Then
> rstselect.MoveLast
> rstselect.MoveFirst
> Do While rstselect.EOF = False
>
> Print #1, CStr(rstselect![ESTD])
>
> rstselect.MoveNext
> Loop
> Else
> End If
> rstselect.Close
>
> Close #1
>
> merci de votre aide
> mj
>
>