OVH Cloud OVH Cloud

Export de données en texte préformaté

24 réponses
Avatar
chris
Bonjour
J'exporte des données d'une table vers un fichier texte qui doit
impérativement respecter un format
un entête
corps du texte
un final
Pour le moment j'ai crée un module qui me crée un fichier texte dans un
dossier prédéfini, et qui écrit dedans les données de cette manière
Printintfichier "bla bla bla" & Nz(([nomduchamp]),"-")
et ce pour chaque ligne de mon fichier (je n'ai pas en tête le code exact
mais je peux le retrouver)
Mon soucis est que si j'ai besoin de changer un paramètre, ou de supprimer
une ligne ou en rajouter une, je suis obligé de modifier le module et de
redonner une copie de mon fichier mde à tous mes utilisateurs
j'ai essayé de faire un fichier export.ini mais mes champs sont "alignés"
les uns derrière les autres et séparés par un ";", je ne sais pas si on peut
faire quelque chose du style:

champ0
Entete*
nomdeligne*-Champ1-champ2-champ3
nomdeligne2*-Champ4-champ6
nomdeligne3*-champ8-champ5
final*

*n'est pas changé par la base et où "champx" est un des champs de la table
cela me permettrais de stocker ce fichier "modele.ini" à l'extérieur de la
base et de pouvoir modifier l'entête, le final ou le nom de ligne sans avoir
à refaire un MDE

quand je regarde un fichier "export.ini"
je n'ai que des
Col1=nomduchamp typedechamp
Col2=nomduchamp typedechamp
etc.
il n'y a pas de commande type
Lig2=...
pour dire "on passe à la ligne2" etc?

4 réponses

1 2 3
Avatar
3stone
Salut,

"Chris"
| j'ai essayé le point d'arrêt, et c'est bien à cet endroit que ça buggue
| quand je passe la souris sur la ligne il met dit :
| <rst.AbsolutePosition=opération non autorisée pour ce type d'objet>



et si tu essaies ceci :

'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")

rst.MoveLast
rst.MoveFirst

'Ouvrir le fichier texte en écriture
...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Chris
oki j'essaye
merci

"3stone" a écrit dans le message de news:
%
Salut,

"Chris"
| j'ai essayé le point d'arrêt, et c'est bien à cet endroit que ça buggue
| quand je passe la souris sur la ligne il met dit :
| <rst.AbsolutePosition=opération non autorisée pour ce type d'objet>



et si tu essaies ceci :

'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")

rst.MoveLast
rst.MoveFirst

'Ouvrir le fichier texte en écriture
...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
Chris
Bonjour
j'a essayé ceci:
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")

rst.MoveLast
rst.MoveFirst

'Ouvrir le fichier texte en écriture
...
ça marche po



par contre j'a essayé ça : (j'ai mis <<<--- devant ce que j'ai changé)
et j'ai le résultat que je voulais
Merci encore à tous

voici le code:
Function message()

Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long

'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"

'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")

'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier

'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
do While Not rst.EOF <<<---- mettre le 'do'
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),"-")
Print #intFichier, rst.AbsolutePosition + 1 & "-" & Nz(rst("NOM"), "-") &
"-" & Nz(rst("Prenom"), "-") &"-" & Nz(rst("adresse"), "-") & "/" &
Nz(rst("téléphone"), "-") & "-" & Nz(rst("email"), "-") & "-" &
Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR", "APR","MAY",
"JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")

Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"

' passer à l'enregistrement suivant
rst.MoveNext
loop <<<--- enlever le 'wend' et remplacé par 'loop'

Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"

'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function


Avatar
Gilbert
Bonjour,


Je suis content pour toi que ça fonctionne, mais je ne comprends pas ce que
ça a pu changer pour le rst.AbsolutePosition

--
Gilbert


"Chris" a écrit dans le message de news:
Oq$
Bonjour
j'a essayé ceci:
'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")

rst.MoveLast
rst.MoveFirst

'Ouvrir le fichier texte en écriture
...
ça marche po



par contre j'a essayé ça : (j'ai mis <<<--- devant ce que j'ai changé)
et j'ai le résultat que je voulais
Merci encore à tous

voici le code:
Function message()

Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim intFichier As Long

'choisir la fiche
DoCmd.OpenQuery "ajout donnee au tampon message", acNormal, acEdit
DoCmd.Close acQuery, "ajout donnee au tampon message"

'Ouvrir le recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("TAMPON message")

'Ouvrir le fichier texte en écriture
intFichier = FreeFile
Open "D:message.txt" For Output As intFichier

'Parcourir les champs et écrire les infos
If Not rst.EOF Then
Print #intFichier, "message emis du" & Nz(rst("DATE"), "-")
do While Not rst.EOF <<<---- mettre le 'do'
Print #intFichier, "objet du message : listing du " & Nz(rst("DATE"),"-")
Print #intFichier, rst.AbsolutePosition + 1 & "-" & Nz(rst("NOM"), "-") &
"-" & Nz(rst("Prenom"), "-") &"-" & Nz(rst("adresse"), "-") & "/" &
Nz(rst("téléphone"), "-") & "-" & Nz(rst("email"), "-") & "-" &
Nz(rst("télécopie"), "-")
Print #intFichier, Choose(Month(DATE - 1), "JAN", "FEB", "MAR",
"APR","MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")

Beep
MsgBox "Message prêt à être envoyé", vbInformation, "Fin"

' passer à l'enregistrement suivant
rst.MoveNext
loop <<<--- enlever le 'wend' et remplacé par 'loop'

Print #intFichier, "Fin de liste"
Else
MsgBox "Pas d'enregistrement"
End If
Beep
MsgBox "Message prêt à envoyer", vbInformation, "Fin"

'on ferme
Close intFichier
rst.Close
Set rst = Nothing
Set db = Nothing
End Function







1 2 3