access其最大的优点是:简单易学!非计算机专业的人员,也能学会。所以用它作为数据库的入门来学习是非常不错的选择。本文主要讲诉怎样一步步搭建一个小型的ACCESS数据库今天在确认实习......
同样的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 问卷扣分.网点代码 = 问卷扣总分.网点代码;
相关文章
- 详细阅读
- 详细阅读
- 详细阅读
-
Access2016数据库开发教程1详细阅读
第一章开发平台概述1.1盟威软件快速开发平台是什么?1.1.1概述《盟威软件快速开发平台(Access版)》是一款免费的快速开发平台。该平台主要用于企业中各种管理信息系统的开发,不会编程的......
2022-04-19 488 Access Access2016 Access2016数据库开发 数据库开发
- 详细阅读