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数据库开发 数据库开发
 - 详细阅读
 
