簡體   English   中英

通過Excel VBA在Access數據庫中編輯和運行SQL查詢

[英]Editing & Running an SQL Query in an Access database from Excel VBA

我正在嘗試編寫一個Excel VBA宏,該宏基於電子表格中的變量運行查詢。 現有數據是網絡上大型數據庫(MS Access)的一半。

由於某些原因,我的代碼運行時,沒有任何內容粘貼回我的電子表格。 您能明白為什么會這樣嗎?

Sub test()

    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim ConnectionString As String
    Dim StrQuery As String


    ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=\\network\data07\version6.mdb;"

    cnn.Open ConnectionString
    cnn.CommandTimeout = 900

    StrQuery = "SELECT dbo_vwData_SelectAll.BusinessDate, , dbo_vwData_SelectAll.Flowdate, dbo_vwData_SelectAll.Bucket FROM dbo_vwData_SelectAll WHERE (((dbo_vwData_SelectAll.Line)=""1.1.1.4"") AND ((dbo_vwData_SelectAll.ReferenceID) Like ""rent*"");"

    rst.Open StrQuery, cnn

    Sheets("Sheet2").Range("A2").CopyFromRecordset rst

End Sub

上面是一個測試-我將基於電子表格中的字符串更改其他變量的"rent*"

提前致謝。

盜用的LIKE運算符是MS Access SQL方言中的一個已知問題。 當使用MSAccess.exe GUI程序時, LIKE使用星號通配符* 但是,與使用Excel一樣,通過ODBC使用MS Access作為后端數據庫, LIKE使用ANSI通配符% 請參閱Access通配符參考中的 MS Office支持文檔。

因此,請考慮以下調整,其中包括使用單引號:

SELECT dbo_vwData_SelectAll.BusinessDate,
       dbo_vwData_SelectAll.Flowdate, dbo_vwData_SelectAll.Bucket 

FROM dbo_vwData_SelectAll

WHERE (((dbo_vwData_SelectAll.Line)='1.1.1.4') 
  AND  ((dbo_vwData_SelectAll.ReferenceID) LIKE 'rent%');

為了在前端或后端接口中保持一致,請考慮ALIKE運算符:

AND  ((dbo_vwData_SelectAll.ReferenceID) ALIKE 'rent%');

暫無
暫無

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

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