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.

22
demandé sur Pieter Nienaber 2009-08-14 04:56:28

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).

23
répondu David-W-Fenton 2012-09-18 17:31:19

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
15
répondu yoonjinl 2012-11-17 04:38:12

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
8
répondu Andre Bernardes 2017-07-07 20:20:11
  1. dans la fenêtre VB, cliquez sur Tools->References....
  2. 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
3
répondu leeand00 2012-09-18 17:44:49