Używanie VBA do eksportowania wszystkich zapytań MS Access SQL do plików tekstowych
Muszę udokumentować bazę danych MS Access z wieloma zapytaniami makr itp. Chcę użyć kodu, aby wyodrębnić każde zapytanie SQL do pliku, który ma taką samą nazwę jak zapytanie, np. jeśli zapytanie ma nazwę q_warehouse_issues to chcę wyodrębnić SQL do pliku o nazwie q_warehouse_issues.sql
NIE CHCĘ EKSPORTOWAĆ ZESTAWU WYNIKÓW ZAPYTANIA, TYLKO SQL!
Wiem, że mogę to zrobić ręcznie w Access, ale mam dość klikania, robienia saveas itp.
4 answers
To powinno zacząć:
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
Możesz użyć obiektu systemu plików lub wbudowanych funkcji We/Wy plików VBA, aby zapisać SQL do pliku. Zakładam, że pytałeś więcej o to, jak uzyskać SQL niż o to, jak napisać plik, ale jeśli potrzebujesz, powiedz to w komentarzu, a ja edytuję post (lub ktoś zamieści własną odpowiedź z instrukcjami na to).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-18 17:31:19
Mam nadzieję, że to pomoże.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-17 04:38:12
To rozwiązanie zawiera pola w zapytaniu
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-07 20:20:11
- w oknie VB Kliknij
Tools->References....
- w oknie Referencje dodaj zależność
Microsoft Scripting Runtime
, zaznaczając ją.
Następnie ten kod wyeksportuje zapytania do pliku odpowiedniego do użycia grep na:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-18 17:44:49