首页 > 其他专区 > Access >

同样的Access查询,直接找开或DAO打开结果正确,但使用ADO代码打开则结果不正确

Access 2022-04-18 22:08:42

完全一样的Access查询,直接找开或DAO打开结果正确,但使用ADO代码打开则结果不正确

就是查询如果比较复杂的话,通过ADO获取这个查询的记录的时候,有些字段的值全部是空的

如果用Access双击打开这个查询,里面的值又是可以计算出来的,最后我只有手工的将查询的结果转存到表里,然后读表,好坑
 


 


 


 

找了个Access实例( 问卷扣分查询 与ADO代码对比)



 

查询与ADO代码对比的结果


 


 


 

查询的详细SQL视图里的语句如下:


 


 

SELECT 问卷扣分.网点代码, IIf((问卷选项.K0 Like '*4*')+(问卷选项.K0 Like '*5*')+(问卷选项.K0 Like '*6*'),-1,IIf(IIf(IsNull(问卷扣分.K0),0,问卷扣分.K0)+IIf(IsNull(问卷扣总分.K0),0,问卷扣总分.K0)<0,IIf(IsNull(问卷扣分.K0),0,问卷扣分.K0)+IIf(IsNull(问卷扣总分.K0),0,问卷扣总分.K0),0)) AS K0 FROM 问卷扣分 INNER JOIN (问卷选项 INNER JOIN 问卷扣总分 ON 问卷选项.网点代码 = 问卷扣总分.网点代码) ON 问卷扣分.网点代码 = 问卷扣总分.网点代码;

 


 


 

而使用ADO VBA代码 如下:


 

Public Sub ff()    Dim rs As New ADODB.Recordset    rs.Open "Select 网点代码,K0 From 问卷扣分查询1", CurrentProject.Connection    Do Until rs.EOF        Debug.Print rs.Fields(0).Value, rs.Fields(1).Value        rs.MoveNext    Loop    rs.CloseEnd Sub


 

但ADO获取的结果不对。


 

经过分析,原来是 ADO 的SQL 中的通配符必须 使用 % ,而不是使用 *


 

1. 解决办法一:将查询中的 * 改为 % ,则通过  ADO调用正常 (tmtony)


 

SELECT 问卷扣分.网点代码, IIf((问卷选项.K0 Like '%4%')+(问卷选项.K0 Like '%5%')+(问卷选项.K0 Like '%6%'),-1,IIf(IIf(IsNull(问卷扣分.K0),0,问卷扣分.K0)+IIf(IsNull(问卷扣总分.K0),0,问卷扣总分.K0)<0,IIf(IsNull(问卷扣分.K0),0,问卷扣分.K0)+IIf(IsNull(问卷扣总分.K0),0,问卷扣总分.K0),0)) AS K0 FROM 问卷扣分 INNER JOIN (问卷选项 INNER JOIN 问卷扣总分 ON 问卷选项.网点代码 = 问卷扣总分.网点代码) ON 问卷扣分.网点代码 = 问卷扣总分.网点代码;
 


标签: 同样Access查询直接找开DAO打开

office教程网 Copyright © 2016-2020 http://www.office9.cn. Some Rights Reserved. 苏ICP备20040415号-9