Использование VBA для экспорта всех запросов SQL Access в текстовые файлы
Мне нужно документировать базу данных MS Access с большим количеством запросов макросов и т.д. Я хочу использовать код для извлечения каждого запроса SQL в файл, который называется так же, как и запрос, например, если запрос называется q_warehouse_issues, тогда я хотите извлечь SQL в файл с именем q_warehouse_issues.sql
Я НЕ ХОЧУ ЭКСПОРТ УСТАНОВИТЬ РЕЗУЛЬТАТ QUERY, ТОЛЬКО SQL!
Я знаю, что могу сделать это вручную в Access, но я устал от всех щелчков, делая saveas и т.д.
Ответы
Ответ 1
Это должно помочь вам:
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
Вы можете использовать объект файловой системы или встроенные функции ввода-вывода VBA для записи SQL файла в файл. Я предполагаю, что вы спрашивали больше о том, как получить SQL, чем о том, как записать файл, но если вам это нужно, скажите это в комментарии, и я отредактирую сообщение (или кто-то опубликует свой собственный ответ с инструкции для этого).
Ответ 2
Надеюсь, что это поможет.
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
Ответ 3
Это решение включает поля в запросе
Public Sub ListQueries()
' Author: Date: Contact:
' André Bernardes 09/09/2010 08:45 [email protected] 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
Ответ 4
- В окне VB нажмите
Tools->References....
- В окне "Ссылки" добавьте зависимость
Microsoft Scripting Runtime
, проверив ее.
Затем этот код будет экспортировать запросы в файл, подходящий для использования grep:
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