使用ADO从Excel调用时,Microsoft访问查询返回不正确的结果

时间:2016-07-07 13:29:10

标签: excel vba ms-access ado

我在microsoft access 2010中保存了一个查询,当从访问内部运行时返回预期结果(没有找到记录)。

但是,当我使用excel的ADO连接(选择查询)时,我会收到一些令人困惑的行,因为我已经在查询中排除了返回结果的条件。

我尝试了一些组合,包括将cursorlocation属性更改为aduseclient,将cursortype更改为static,然后尝试将其更改为keyset,如下所示:

试用1

Set objRst3 = New ADODB.Recordset
objRst3.Open strSql, CurrentProject.Connection, adOpenKeyset

试用2

Set objRst3 = New ADODB.Recordset
objRst3.Open strSql, CurrentProject.Connection, adOpenStatic

我也尝试在excel发送的select语句中包含我的标准,也排除了标准,而是将它放在microsoft access中的查询设计器中。

我没有使用JET驱动程序连接访问,连接字符串即时使用 是

GetAccessConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";"

然而,我仍然得到奇怪的结果。我怎么能绕过这个

修改

我的查询结构如下。未从Excel中获取的过滤条件是行' AS MAIN WHERE STATUS<> " CLPd"'

SELECT DISTINCT ..
FROM 
        (
          SELECT DISTINCT ... STATUS
            FROM ( 
              SELECT distinct .. FROM ... AS OD 
              LEFT JOIN ((select ...FROM ..) as ST) on (OD.id = st.id) and      (od.ord = st.ord)
            )
        ) AS MAIN WHERE STATUS <> "CLPd"
LEFT JOIN 
        (
           SELECT DISTINCT ....
            FROM tbl1
            INNER JOIN tbl2 on tbl1.id = tbl2.id
            WHERE tbl2.col1 = "Y" and tbl1.col2 = "Y"
            ORDER BY tbl1.id  
        ) AS ITEMCONFIG on MAIN.itemcode = ITEMCONFIG.itemcode
WHERE
        (
        MAIN.CUSTMR not Like "OTHER*" and MAIN.DATE < DATE()
        )
ORDER BY MAIN.DATE

0 个答案:

没有答案