在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 VIEW
replaceCREATE 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)