Bonjour,
J'ai doit exporter 3 requêtes d'une base de donnée ACCESS
vers un fichier text .txt et ce avec mise en page séquentiel, c-à-d :
1ere requête sera l'entête de page du fichiere txt
2ème requête sera le corps de page du fichier txt
3ème requête sera le pied de page du fichier txt.
Je dois utiliser du code VBA
et sans devoir passer par une table intérmédiaire.
Pour ce qui est du sauvegarde de requêtes dans le fichier texte
le code ci dessous que j'ai trouvé dans la FAQ Access, je pense serait bon :
Public Sub SauvegarderRqt(strFichier As String)
On Error Goto Err
Dim Db As DAO.Database
Dim qry As DAO.QueryDef
Dim FSO As New Scripting.FileSystemObject
Dim oFileText As Scripting.TextStream
'Instancie Db
Set Db = CurrentDb
'Ouvre le fichier texte (le crée s'il n'existe pas)
Set oFileText = FSO.OpenTextFile(strFichier, ForWriting, True)
'Pour chaque requête
For Each qry In Db.QueryDefs
'si la requête n'est pas sytème (commence par ~)
If Left(qry.Name, 1) <> "~" Then
'Ecrit le nom de la requête et son code SQL
With oFileText
'Ecrit le titre et des #
.WriteLine String(Len(qry.Name) + 4, "#")
.WriteLine "# " & qry.Name & " #"
.WriteLine String(Len(qry.Name) + 4, "#")
'Saute 1 ligne et écrit le SQL
.WriteBlankLines (1)
.WriteLine qry.SQL
'Saute 3 lignes
.WriteBlankLines (3)
End With
End If
Next qry
'Ferme le fichier, libère la mémoire
oFileText.Close
Set FSO = Nothing
Db.Close
Set Db = Nothing
'Demande à l'utilisateur s'il veut visualiser le fichier
If MsgBox("Voulez vous ouvrir le fichier généré ?", _
vbQuestion + vbYesNo, "Sauvegarde requête") = vbYes Then
Shell "notepad.exe " & strFichier, vbMaximizedFocus
End If
Exit Sub
Err:
Msgbox "Une erreur est survenue."
End Sub
Remarque: je dois toutefois créer 2 fichiers dont le contenu est semblable mais que les noms différent. comment pourrais je faire une boucle dans ce code de manière effiscient?
De plus je dois également stocker dans une table paramètre le chemin du fichier texte ainsi que son nom sur 2 champs différents. Quel sera le code en VBA et comment pourrais-je implementer ce code dans le code ci-dessus?
Merci
Aliveli
Partager