在ADODB(VBA,Excel和Acccess 2010)中执行查询时出现错误80004005,

我有一个问题,我不能得到我的头。 我有一个Access数据库,我试图通过使用ADODB在Excel中使用VBA创build一组查询。

我有几个查询成功创build,即。 在这里下面的一个。 第二个将不会工作。 如果我手动将查询复制到访问数据库(从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; 

以下查询使用相同的数据创build时没有任何问题:

 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; 

只要我创build联接或使用“WHERE DK_Teledata.Interval = Time_Intervals.Time_Interval”失败。

“间隔”和“时间间隔”字段都是具有相同长度和属性的“文本”字段。

请帮忙 !

非常感谢马丁

使用Excel 2010,accdb数据库文件和“Microsoft.ACE.OLEDB.12.0”提供程序string。

作为一个疯狂的猜测,我build议你用CREATE VIEWreplaceCREATE PROCEDURE

如果这也不起作用,您可以使用DAO来创build您的查询。

 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) 
Interesting Posts