簡體   English   中英

在ADODB(VBA,Excel和Access 2010)中執行查詢時出現錯誤80004005

[英]Error 80004005 when executing query in ADODB (VBA, Excel and Access 2010)

我有一個無法解決的問題。 我有一個Access數據庫,試圖通過使用ADODB在Excel中使用VBA在其中創建一組查詢。

我有幾個成功創建的查詢,即。 下面的一個。 但是第二個將不起作用。 如果我將查詢手動復制到訪問數據庫(從SELECT到轉發數據庫)並保存為“ DK_Teledata_1”,則可以完美運行

CREATE PROCEDURE DK_Aktiviteter_Union_1 AS SELECT DK_Aktivitet.År FROM DK_Aktivitet;

而且那是行不通的

CREATE PROCEDURE DK_Teledata_1 AS SELECT DK_Teledata.Dato FROM DK_Teledata INNER JOIN Time_Intervals ON DK_Teledata.Interval = Time_Intervals.Time_Interval;

創建具有相同數據的以下查詢沒有任何問題:

CREATE PROCEDURE DK_Teledata_1 AS SELECT * FROM DK_Teledata;
CREATE PROCEDURE DK_Teledata_1 AS SELECT * FROM Time_Intervals;
CREATE PROCEDURE DK_Teledata_1 AS SELECT * FROM Time_Intervals, DK_Teledata;

一旦創建連接或使用“ WHERE DK_Teledata.Interval = Time_Intervals.Time_Interval”,它就會失敗。

字段Intervals和Time_Intervals都是具有相同長度和屬性的Text字段。

使用Excel 2010,accdb數據庫文件和“ Microsoft.ACE.OLEDB.12.0”提供程序字符串。

作為一個瘋狂的猜測,我建議您用CREATE VIEW代替CREATE PROCEDURE

如果那也不起作用,則可以使用DAO創建查詢。

Dim strSql As String
Dim db As DAO.Database
Dim qdf As DAO.QueryDef

strSql = "SELECT DK_Teledata.Dato" & vbCrLf & _
    "FROM DK_Teledata INNER JOIN Time_Intervals" & vbCrLf & _
    "ON DK_Teledata.Interval = Time_Intervals.Time_Interval;"
Set db = OpenDatabase("C:\db_folder\your.accdb", True, False)
Set qdf = db.CreateQueryDef("DK_Teledata_1", strSql)

該代碼使用早期綁定,因此需要設置參考。 但是您可以使用后期綁定執行相同的操作,而無需引用。

Dim strSql As String
Dim dbe As Object
Dim db As Object
Dim qdf As Object

strSql = "SELECT DK_Teledata.Dato" & vbCrLf & _
    "FROM DK_Teledata INNER JOIN Time_Intervals" & vbCrLf & _
    "ON DK_Teledata.Interval = Time_Intervals.Time_Interval;"
Set dbe = CreateObject("DAO.DBEngine.120")
Set db = dbe.OpenDatabase("C:\db_folder\your.accdb", True, False)
Set qdf = db.CreateQueryDef("DK_Teledata_1", strSql)

暫無
暫無

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

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