2

J'ai recherché ce problème haut et bas pour obtenir une réponse ou au moins un modèle. J'utilise MS Access 2007. J'ai besoin d'exporter une requête sous forme de fichier texte avec des spécifications de largeur fixe (déjà fait). Le problème (s) que je rencontre, est que je dois avoir un en-tête et un pied de page spécifique ajouté à l'exportation. En-tête doit avoir la date actuelle et la remorque doit avoir le total des éléments exportés.Accéder à la requête d'exportation sous forme de texte avec en-tête et pied de page

Je suis certes au-dessus de ma tête, mais habituellement je peux trébucher avec un code VBA qui fait quelque chose de similaire.

Quelqu'un peut-il aider?

+0

Créer une requête d'en-tête d'une ligne avec des champs factices après la «date» actuelle et une requête de semi-remorque avec les éléments totaux et les mêmes «champs» vides vierges. Puis joignez-les tous ensemble dans une requête d'union avant d'exporter ... Cela pourrait fonctionner – dbmitch

Répondre

1

Il n'existe aucun moyen de définir des lignes de texte supplémentaires dans une exportation. Je suppose que vous utilisez la méthode TransferSpreadsheet pour exporter votre requête au format à largeur fixe. C'est généralement la bonne approche pour générer le contenu à largeur fixe, avec ou sans en-têtes de champ. Mais si vous voulez ajouter des lignes au fichier avant et après le contenu des données, vous devrez ouvrir le fichier existant, créer un nouveau fichier, ajouter les lignes d'en-tête, puis ajouter les données du fichier existant dans le nouveau fichier, puis ajoutez les lignes de pied de page, puis fermez les deux fichiers.

Vous pouvez utiliser les fonctions VBA intégrées pour travailler avec des fichiers, mais je trouve que la bibliothèque Scripting.Runtime offre des méthodes plus intuitives et orientées objet pour travailler avec des fichiers.

Vous aurez besoin d'ajouter une référence à la bibliothèque Microsoft Scripting Runtime Outils .. Références ..

Sub EnhanceExportedFile() 

    Const exportedFilePath As String = "C:\Foo.txt" 
    Const newFilePath As String = "C:\NewFoo.txt" 

    Dim fso As Scripting.FileSystemObject 
    Dim exportedFile As TextStream 
    Dim newFile As TextStream 
    Dim rowCount As Long 

    Set fso = New Scripting.FileSystemObject 

    Set exportedFile = fso.OpenTextFile(exportedFilePath, ForReading, False) 
    Set newFile = fso.CreateTextFile(newFilePath, True) 

    'Append the date in ISO format 
    newFile.WriteLine Format(Now, "yyyy-mm-dd") 

    'Append each line in the exported file 
    Do While Not exportedFile.AtEndOfStream 
    newFile.WriteLine exportedFile.ReadLine 
    rowCount = rowCount + 1 
    Loop 
    'Append the total exported lines 
    newFile.WriteLine rowCount 

    'Close both files 
    exportedFile.Close 
    newFile.Close 

End Sub 
0

Utilisez une requête syndicale. Supposons que votre requête comporte des champs ID (numéro automatique, long), prénom, nom et votre nom de tableau est tablexx. Si vous avez des identifiants séquentiels, cela peut ressembler à ceci:

Créer une requête. Sélectionnez 0 comme identifiant, format (date(), "jj/mm/aaaa") en tant que prénom, "" en tant que nom de famille, "" en tant que nextfield etc etc de tablexx order by id;

et une requête
Sélectionnez 9999999999 (beaucoup plus grand que votre identifiant prévu) comme id, (select count (id) de TableXX) comme prenom, "" comme nom "" comme ChampSuivant etc etc de l'ordre TableXX par id ;

Faites maintenant une union des trois. Même des lignes vides peuvent être ajoutées (id = 1, etc.).