VBA+ADO出现奇异问题
小弟使用EXCEL2010 VBA+ADO,引用ACCESS2010数据库中的查询。代码如下:
Public Sub adoDate()
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
Set adoConn = New ADODB.Connection
Set adoRS = New ADODB.Recordset
With adoConn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open "D:\客户表格.accdb"
End With
adoRS.Open "[查询2]", adoConn
Range("A1").CopyFromRecordset adoRS
adoRS.Close
Set adoRS = Nothing
End Sub
[查询2]SQL代码如下:
SELECT 客户表.公司名称, 客户表.注册日期, 客户工程师表.姓名, 项目表.项目名称
FROM (客户表 INNER JOIN 客户工程师表 ON 客户表.ID = 客户工程师表.客户表ID)
INNER JOIN 项目表 ON 客户工程师表.ID = 项目表.工程师ID;
SQL代码在ACCESS2010中运行OK,能返回查询结果。
问题:
在VBA中调试出错,错误如图(3表):
但是--
如果是2个表的查询:
SELECT 客户表.公司名称, 客户表.注册日期, 客户工程师表.姓名
FROM 客户表 INNER JOIN 客户工程师表 ON 客户表.ID = 客户工程师表.客户表ID;
VBA就可以顺利执行并得出结果。
或者将3表查询的SQL语句写在adoRS.Open ""引号内可以顺利执行,为什么会这样呢?
如何才能引用3表查询呢?
vba sql access 2010 --------------------编程问答-------------------- adoRS.Open "[查询2]", adoConn
查询2的方括号去掉试试
或者
adoRS.Open "select * from 查询2", adoConn
--------------------编程问答--------------------
SELECT A.公司名称, A.注册日期, A.姓名, 项目表.项目名称
FROM (SELECT 客户表.ID,客户表.公司名称, 客户表.注册日期, 客户工程师表.姓名 FROM 客户表 INNER JOIN 客户工程师表 ON 客户表.ID = 客户工程师表.客户表ID) A
INNER JOIN 项目表 ON A.ID = 项目表.工程师ID
--------------------编程问答-------------------- TO worldy:
1."adoRS.Open "[查询2]", adoConn 查询2的方括号去掉试试"
方括号是必要的,不然会当成文本,而不引用。
2."adoRS.Open "select * from 查询2", adoConn "
此方案可行能得出结果而不报错。
--------------------编程问答-------------------- TO dong_y888:
1.新SQL语句方案
此方案在ACCESS2010中调试通过,但是EXCEL2010中引用中依然不能通过,出现开贴中的错误信息。
--------------------编程问答-------------------- adoRS.Open "[查询2]", adoConn
换成
adoRS.Open "select * from [查询2]", adoConn
试试这样行不 可行的话请告诉我 --------------------编程问答-------------------- TO wzn721721:
见3楼答复 --------------------编程问答-------------------- 大过年的我这眼神
http://zhidao.baidu.com/question/78045966.html --------------------编程问答--------------------
不明白,为什么方括号是必须的,按照我的经验,你的查询2应该是在数据库中设计的一个视图,那么直接打开视图
adoRS.Open "查询2", adoConn 完全是可以的,再说,查询所有的元素都是文本 --------------------编程问答-------------------- 除
补充:VB , VBA