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

完全一样的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教程
Access教程
Access教程
Access教程