Access交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • 浅谈Access中条件表达..
  • Access通用平台解决登..
  • Access通用开发平台在..
  • 浅谈Access中条件表达..
  • Freebasic菜鸟初学..

最新文章

  • 浅谈Access中条件表达..
  • 浅谈Access中条件表达..
  • Freebasic菜鸟初学..
  • Access通用平台解决登..
  • Access通用开发平台在..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 其它/杂项
其它/杂项

浅谈Access中条件表达式Criteria

  什么是Criteria?可能很多读者都不知道。Access中,Criteria无处不在,无时无刻不在你的代码中出现,可能你每天都要和她打交道无数次。
  那么究竟什么才是Critetia,让我们来看下面这个例子:

Forms![窗体_1]![Text0]


  你可能会觉得,这不是一个很标准的表达式吗?没错,这就是Criteria。
  之所以我在文中不使用“表达式”来称呼她,是因为Criteria并不是标准的表达式,如果你使用过Eval函数,你就会知道,Eval处理的表达式才是标准的表达式,也正是因为如此,在VBA中文文档中,并没有把Criteria作中文翻译,而是使用了英文的原名。因为她是一种特殊的表达式。

    既然我们已经认识了Criteria,我们一定可以回想起,我们在如此多的地方使用过她,在查询中,在窗体中,在报表中,……但是请你回忆一下,是不是每次都是你把Criteria告诉Access,然后她来帮你作处理,有没有你直接求出Criteria值然后自己来使用的?有?没有?有?没有?好好想想,到底有没有?  可能你开始觉得有点疑惑了,好像真的没有。不必疑惑,

  因为Access根本没有提供Criteria的求值接口!

  没错,Access完全隐藏了Criteria的求值过程,但是Access一定有个函数或者一个函数库来进行Criteria的求值。你可能会问我为什么这么肯定,理由很简单,Criteria包含的内容实在太多,可能是对象的数据,也可能是SQL查询的字段,可能是函数,还可能是……反正表达式生成器里面的那一堆东西,都可以包含在Criteria中,因此Criteria的求值过程并不是一个简单的过程,Access不可能为每个功能单独写段代码来对Criteria进行求值,所以她必定是一个模块,一个Access没有或者说不愿意公开接口的模块。唯一和Criteria有点关系的,可能就是Application对象的BuildCriteria方法了,但这只是一个Criteria生成(确切说是格式化)的方法,最终生成的Criteria,我们还是要通过各种不同的功能、函数传送给Access,以表达我们想要表达的内容,但是这个内容的最终结果是不是正确,我们无从得知,只能从功能和函数返回的值是否符合我们的预期来判断我们的Criteria是否传递正确了。

  这太不公平了!

  我们居然要隔着靴子挠痒痒!任何一个语言的开发环境都允许我们在调试模式下监视我们的值是否正确传递,但是Criteria,这个我们自己创建的东西,Access居然不允许我们直接查看她的结果。你不让,我偏要!

  经过一番尝试,我找到了一种Criteria求值方法。让我们创建一个窗体,添加三个名为Text1、Text2、Text3的文本控件,并且写入以下代码:

Private Sub Text2_AfterUpdate()
    Text3.ControlSource = "=" & Text2.Value
End Sub


  OK!让我们来执行这个窗体,并按照以下步骤输入:

1、Text1输入:我是Text1
2、Text2输入:[Text1]

  你看到了什么?呵呵,不用觉得惊讶,我们“的确”已经计算出了Criteria的值。你还可以尝试输入:Forms![窗体1].Name来看看窗体的名字。看来对象的解读没有问题,那么SQL字段呢?接着我们在这个窗体上绑定一个表,里面包含字段1,字段2,第一条记录是(123,120),然后再打开窗体,照以下步骤操作:

1、Text1输入:100
2、Text2输入:[字段1]*[字段2]/[Text1]

  哈哈,太好了,数据库字段解读一点问题都没有。最后再让我们尝试一下在VBA中获取到这个值。让我们首先把VBA代码中原先的代码删除,加入以下代码:

Private Sub Text2_AfterUpdate()
    Text3.Value = EvalCriteria(Text2.Value)
End Sub

Public Function EvalCriteria(ByVal strCriteria As String) As Variant
    Criteria.ControlSource = "=" & Text2.Value
    DoEvents
    EvalCriteria = Criteria.Value
End Function


  在这里,我们在窗体上放置了一个隐藏的文本控件名为Criteria,用于Criteria绑定数据源的中转,那么现在就让我们来运行这个窗体吧。
  运行的结果这里就不在赘述了,通过将Criteria当作一个数据源来绑定,我们成功地对Criteria进行了求值,终于踏出了揭开Criteria神秘面纱的第一步。(待续)


发布人:LucasLynn  
分享到:
点击次数:  更新时间:2017-11-16 16:00:14  【打印此页】  【关闭】
上一条:浅谈Access中条件表达式Criteria(二)  下一条:窗体属性 弹出方式、模式和代码acDialog模式的区别



相关文章

  • • 浅谈Access中条件表达式Criteria(二)
  • • Freebasic菜鸟初学Freebasic基础教程
  • • Access通用平台解决登录不弹出登录框的问题
  • • Access通用开发平台在系统启动时自动打开你指定的窗体

热门文章

  • [2017-05-04] Access通用开发平台在系统启动时自动打开你指定的窗体access数据库
  • [2017-11-16] 浅谈Access中条件表达式Criteriaaccess数据库
  • [2017-11-24] 浅谈Access中条件表达式Criteria(二)access数据库
  • [2017-05-06] Access通用平台解决登录不弹出登录框的问题access数据库
  • [2017-05-22] Freebasic菜鸟初学Freebasic基础教程access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

Access交流网 版权所有 1999-2018 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2023  www.metinfo.cn