簡體   English   中英

如何將MS Access查詢對象導出到文本文件

[英]How do you export MS Access Query Objects to text file

在MS Access中,我需要將所有查詢備份到文本文件

我可以很好地與其他Access對象一起使用,例如以下是將所有報告備份到文本文件的示例

Dim oApplication
Set oApplication = CreateObject("Access.Application")

For Each myObj In oApplication.CurrentProject.AllReports
        WScript.Echo "Report  " & myObj.fullname
        oApplication.SaveAsText acReport, myObj.fullname, sExportpath & "\" & myObj.fullname & ".report"
Next

我嘗試了以下備份所有查詢

For Each myObj In oApplication.CurrentData.AllQueries
    WScript.Echo "Query  " & myObj.fullname
    oApplication.SaveAsText acQuery, myObj.Name, sExportpath & "\" & myObj.Name & ".query"
Next

但是,生成的文本文件是查詢輸出。 它絕對不是我正在尋找的查詢定義。

這里要清楚的是我試圖導出到文本的圖像

在此輸入圖像描述

有沒有人對如何實現這一點有任何想法?

迭代QueryDefs應該適合你

Dim def As DAO.QueryDef
Dim defCol As DAO.QueryDefs

Set defCol = CurrentDb.QueryDefs

For Each def In defCol
    Debug.Print def.SQL
Next

這個怎么樣(需要在VBA編輯器的Tools | References下選中'Microsoft Scripting Runtime'):

Dim Def As DAO.QueryDef
Def FSO As New Scripting.FileSystemObject, Stream As Scripting.TextStream
For Each Def In CurrentDb.QueryDefs
  Set Stream = FSO.CreateTextFile(sExportpath & "\" & Def.Name & ".query")
  Stream.Write(Def.SQL)
  Stream.Close
Next

或者,如果您使用的是VBScript:

Dim Def, FSO, Stream
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each Def In oApplication.CurrentDb.QueryDefs
  Set Stream = FSO.CreateTextFile(sExportpath & "\" & Def.Name & ".query")
  Stream.Write(Def.SQL)
  Stream.Close
Next

acQuery常量的值為1.( AcObjectType枚舉

也許你的結果是因為該代碼使用6而不是1。我不知道在這種情況下發生什么,因為沒有任何的AcObjectType常量的使用訪問VBA,當我嘗試過的6值SaveAsText 6,一些奇怪的事情發生了:輸出文件已創建,但Windows拒絕我查看其內容的權限; 不久之后,出現了一個對話框,看起來像Access正在尋找SQL Server上的東西......雖然我保存的查詢定義不涉及SQL Server。 奇怪的東西!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM