![](/img/trans.png)
[英]runtime error '-2147467259 (80004005)' , expected ']' found 'NAME' when running a xpath query in excel vba
[英]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.