Utilisation de VBA pour exporter toutes les requêtes SQL MS Access vers des fichiers texte
je dois documenter une base de données MS Access avec de nombreuses requêtes macros, etc. Je souhaite utiliser le code pour extraire chaque requête SQL vers un fichier qui est nommé le même que la requête, par exemple si une requête est appelée q_warehouse_issues puis je souhaite extraire le SQL vers un fichier nommé q_warehouse_issues.sql
JE NE SOUHAITE PAS EXPORTER LE JEU DE RÉSULTATS DE LA REQUÊTE, JUSTE LE SQL!
je sais que je peux le faire manuellement dans Access, mais je suis fatigué de tous les clics, faire saveas etc.
4 réponses
cela devrait vous aider à commencer:
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDB()
For Each qdf In db.QueryDefs
Debug.Print qdf.SQL
Next qdf
Set qdf = Nothing
Set db = Nothing
vous pouvez utiliser L'objet du système de fichiers ou les fonctions d'Entrée/Sortie de fichier VBA intégrées pour écrire le SQL dans un fichier. Je suppose que vous demandiez plus sur la façon d'obtenir le SQL que vous étiez sur la façon d'écrire le fichier, mais si vous avez besoin de cela, dites-le dans un commentaire et je vais éditer le post (ou quelqu'un postera leur propre réponse avec des instructions pour cela).
Espérons que cette aide.
Public Function query_print()
Dim db As Database
Dim qr As QueryDef
Set db = CurrentDb
For Each qr In db.QueryDefs
TextOut (qr.Name)
TextOut (qr.SQL)
TextOut (String(100, "-"))
Next
End Function
Public Sub TextOut(OutputString As String)
Dim fh As Long
fh = FreeFile
Open "c:\File.txt" For Append As fh
Print #fh, OutputString
Close fh
End Sub
cette solution inclut les champs de requête
Public Sub ListQueries()
' Author: Date: Contact:
' André Bernardes 09/09/2010 08:45 bernardess@gmail.com http://al-bernardes.sites.uol.com.br/
' Lista todas as queries da aplicação.
' Listening:
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
On Error Resume Next
For i = 0 To CurrentDb.QueryDefs.Count - 1
Debug.Print "Query: " & CurrentDb.QueryDefs(i).Name
For j = 0 To CurrentDb.QueryDefs(i).Fields.Count - 1
Debug.Print "Field " & CurrentDb.QueryDefs(i).Fields(j).Name
Next
Debug.Print " SQL: " & CurrentDb.QueryDefs(i).SQL
Next
End Sub
- dans la fenêtre VB, cliquez sur
Tools->References....
- dans la fenêtre des références, ajoutez la dépendance
Microsoft Scripting Runtime
en la cochant.
alors ce code exportera les requêtes vers un fichier approprié pour utiliser grep on:
Sub ExportQueries()
Dim fso As New FileSystemObject
Dim stream As TextStream
Set stream = fso.CreateTextFile("e:\temp\queries.txt")
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDb()
For Each qdf In db.QueryDefs
stream.writeline "Name: " & qdf.Name
stream.writeline qdf.SQL
stream.writeline "--------------------------"
Next qdf
Set qdf = Nothing
Set db = Nothing
End Sub