一. 概述
作为数据管理程序,统计和查询功能是非常重要的。否则,就和电子表格没有区别了。所以,在每个ACCESS程序中都不可能缺少查询的功能。
本文的目的是由浅入深的介绍几种最常用的利用主/子窗体来实现查询的方法,使初学者和有一定VBA基础的人可以更好的使用窗体查询这种手段。
附件中的窗体“常用窗体查询0.MDB”,仅包含3个数据表、1个查询和以这个查询为数据源的报表。是为了大家根据后面学习的内容作练习用的。
我们先看查询中的数据:
书籍 编号 | 书名 | 类别 | 作者 | 出版社 | 单价 | 进书日期 |
22 | CHIP-01-08 | 报刊 | 电子计算机与外部设备期刊社 | 电子计算机与外部设备 | ¥16.80 | 2001-9-28 |
25 | 电脑新时代-6光盘 | 光盘 | UNKNOWN | 电脑新时代 | ¥5.00 | 2002-7-8 |
27 | 学电脑-7光盘 | 光盘 | UNKNOWN | 人民邮电 | ¥5.00 | 2002-7-13 |
28 | CHIP-02-07光盘 | 光盘 | 电子计算机与外部设备杂志社 | 电子计算机与外部设备 | ¥5.00 | 2002-7-13 |
16 | MCSE学习指南 | 书籍 | Syngress Media公司 | 人民邮电 | ¥62.00 | 2001-9-28 |
17 | 局域网原理与架设技术内幕大公开 | 书籍 | 蔡昌均 | 中国青年 | ¥69.00 | 2001-9-28 |
19 | AccessVBA基础 | 书籍 | EvanCallahan | 人民邮电 | ¥39.00 | 2001-9-28 |
20 | 中文版Access2001一册通 | 书籍 | 赵琳等 | 人民邮电 | ¥42.00 | 2001-9-28 |
21 | VISUALBASIC5.0教程 | 书籍 | SteveBrown | 电子工业 | ¥28.00 | 2001-9-28 |
23 | 中文版VisualBasic5.0程序员指南 | 书籍 | microsoft | 中国青年 | ¥70.00 | 2001-9-28 |
24 | Access中文版开发指南 | 书籍 access常见条件表达式 | Alison Balter | 人民邮电 | ¥128.00 | 2002-2-16 |
29 | Access 2002数据库系统开发实例导航 | 书籍 | 桂思强 | 中国铁道 | ¥25.00 | 2003-3-10 |
30 | 中国名陵——集中华古代名陵之大成 | 书籍 | 罗哲文等 | 百花文艺 | ¥14.00 | 2003-5-20 |
31 | 边缘部落——福音谷 | 书籍 | 林茨(撰文摄影) | 河北教育 | ¥27.00 | 2003-5-20 |
为了比较有代表性,这个查询中包含多种字段类型:
数字类型:【书籍编号】、【单价】
字符类型:【书名】、【类别】、【作者】、【出版社】
日期类型:【进书日期】
在多条件查询中,我们会使用除了【书籍编号】之外的其他字段作为查询条件。
其实,在下面介绍的窗体查询方法中,有些代码或思路也可以应用在其它窗体查询方法中,你对各种代码、方法和思路越熟练,就越能充分发挥它们的作用。
这篇文章我是从4月初开始构思,到5月中旬开始动笔,花费两周时间写成,里面包含了我对ACCESS窗体查询所积累的经验,对初学者和有一定VBA基础的人都有针对性的方法。另外,希望其他精通ACCESS的高手提出意见。
二. 制作主/子窗体的步骤
1. 利用向导制作主窗体
现在的主窗体还太小,要已经以下步骤才能变成我们需要的主窗体(如下图):
①把窗体面积放大到足以容纳条件输入字段和子窗体,并调整所有控件的字体;
②把窗体的“记录源”和各控件的“数据来源”都删除(很多初学者很容易犯的错误就是这里),把类别和出版社改为组合框(因为这些字段的可能值比较少,直接选择就好,不必让用户输入);
③重新调整各字段的位置,并增加了两个空文本框和标签放在单价和进书日期后面(因为我打算使用一个范围来作查询条件,而不是一个固定的值,这样比较符合实际);
④单价后面的两个文本框改名为“单价开始”和“单价截止”,进书日期后面的两个文本框改名为“进书日期开始”和“进书日期截止”;
⑤画一个矩形框包住所有查询条件,把矩形框背景设置为常规,背景为深灰,特殊样式为凹陷,此时矩形框覆盖了其它控件,要用菜单中“格式”→“置于底层”才能让它们显示出来;
⑥在窗体上用向导建立一个按钮,按钮标题是“查询”,名称是“cmd查询”先不管里面的代码,后面再修改;
⑦窗体属性中“记录选定器”=否,“浏览按钮”=否。
2. 利用向导设计子窗体
①在主窗体中用工具箱中的“子窗体/子报表”对象建立一个子窗体;
②以存书查询为记录源,选择所有字段;
③把子窗体命名为“存书查询子窗体”;
④在主窗体上删除子窗体的标签,并重新调整子窗体的大小;
⑤关闭主窗体的设计视图,单独打开子窗体数据表视图,调整字体和行的大小。
现在,我们得到了如下的窗体:
现在还没有实际的查询功能,我们在后面要根据所使用的方法,修改窗体并增加一些其他的功能。
还有一些小的细节要注意,比如:按TAB键后的获得光标的控件的顺序要在设计视图下,视图菜单的“TAB键次序”来修改;有些文本框获得焦点后是否要打开输入法,比如输入单价和日期的地方要关闭,输入书名和作者的地方要打开,这些要在控件属性中设置。
三. 查询方法1:在查询中加入条件
这种方法对应的实例数据库是:“常用窗体查询1.MDB”。
1. 设计查询
我们打开“存书查询”设计视图如下:
在字段【书名】的准则格内写入:
Like IIf(IsNull([Forms]![存书查询窗体]![书名]),'*','*' & [Forms]![存书查询窗体]![书名] & '*')
加入后的设计视图如下:
把这个式子解释一下:
LIKE:是专门用于查询字符型字段的运算符,一般介绍ACCESS的书中都有它的用法。
ISNULL([Forms]![存书查询窗体]![书名]):是用来判断窗体“存书查询窗体”上面的“书名”这个文本框是否是空的。如果文本框是空的,则:
ISNULL([Forms]![存书查询窗体]![书名])=TRUE(真)
如果文本框不是空的,则:
ISNULL([Forms]![存书查询窗体]![书名])=FALSE(假)
IIF(expr, truepart, falsepart)函数:
expr 必要参数。用来判断真伪的表达式。
truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。
falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。
所以当我们在窗体“存书查询窗体”上面的“书名”里写上“ACCESS”,整个式子的结果是:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论