ACCESS窗体查询实例_第1页
ACCESS窗体查询实例_第2页
ACCESS窗体查询实例_第3页
ACCESS窗体查询实例_第4页
ACCESS窗体查询实例_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 一一. 概述概述 作为数据管理程序,统计和查询功能是非常重要的。否则,就和电子表格没有 区别了。所以,在每个 access 程序中都不可能缺少查询的功能。 本文的目的是由浅入深的介绍几种最常用的利用主/子窗体来实现查询的方法, 使初学者和有一定 vba 基础的人可以更好的使用窗体查询这种手段。 附件中的窗体“常用窗体查询 0.mdb” ,仅包含 3 个数据表、1 个查询和以这 个查询为数据源的报表。是为了大家根据后面学习的内容作练习用的。 我们先看查询中的数据: 书籍书籍 编号编号 书名书名类别类别作者作者出版社出版社单价单价进书日期进书日期 22chip-01-08 报刊 电子计算机与外

2、部设 备期刊社 电子计算机与外部 设备 ¥16.802001-9-28 25 电脑新时代-6 光盘光盘 unknown 电脑新时代 ¥5.002002-7-8 27 学电脑-7 光盘光盘 unknown 人民邮电 ¥5.002002-7-13 28 chip-02-07 光盘光盘 电子计算机与外部设 备杂志社 电子计算机与外部 设备 ¥5.002002-7-13 16 mcse 学习指南书籍syngress media 公司 人民邮电 ¥62.002001-9-28 17 局域网原理与架设技 术内幕大公开 书籍蔡昌均中国青年 ¥69.002001-9-28 19 accessvba 基础书籍

3、evancallahan 人民邮电 ¥39.002001-9-28 20 中文版 access2001 一 册通 书籍赵琳等人民邮电 ¥42.002001-9-28 21 visualbasic5.0 教程 书籍 stevebrown 电子工业 ¥28.002001-9-28 23 中文版 visualbasic5.0 程序 员指南 书籍 microsoft 中国青年 ¥70.002001-9-28 24 access 中文版开发指 南 书籍 alison balter 人民邮电 ¥128.002002-2-16 29 access 2002 数据库 系统开发实例导航 书籍桂思强中国铁道 ¥2

4、5.002003-3-10 30 中国名陵集中华 古代名陵之大成 书籍罗哲文等百花文艺 ¥14.002003-5-20 31 边缘部落福音谷书籍林茨(撰文摄影)河北教育 ¥27.002003-5-20 为了比较有代表性,这个查询中包含多种字段类型: 数字类型:【书籍编号】 、 【单价】 字符类型:【书名】 、 【类别】 、 【作者】 、 【出版社】 2 日期类型:【进书日期】 在多条件查询中,我们会使用除了【书籍编号】之外的其他字段作为查询条件。 其实,在下面介绍的窗体查询方法中,有些代码或思路也可以应用在其它窗体 查询方法中,你对各种代码、方法和思路越熟练,就越能充分发挥它们的作用。 这篇文

5、章我是从 4 月初开始构思,到 5 月中旬开始动笔,花费两周时间写成, 里面包含了我对 access 窗体查询所积累的经验,对初学者和有一定 vba 基 础的人都有针对性的方法。另外,希望其他精通 access 的高手提出意见。 3 二二. 制作主制作主/子窗体的步骤子窗体的步骤 1. 利用向导制作主窗体利用向导制作主窗体 现在的主窗体还太小,要已经以下步骤才能变成我们需要的主窗体(如下图): 把窗体面积放大到足以容纳条件输入字段和子窗体,并调整所有控件的字体; 把窗体的“记录源”和各控件的“数据来源”都删除(很多初学者很容易犯 的错误就是这里) ,把类别和出版社改为组合框(因为这些字段的可能

6、值比较 少,直接选择就好,不必让用户输入) ; 重新调整各字段的位置,并增加了两个空文本框和标签放在单价和进书日期 后面(因为我打算使用一个范围来作查询条件,而不是一个固定的值,这样比 较符合实际) ; 4 单价后面的两个文本框改名为“单价开始”和“单价截止” ,进书日期后面 的两个文本框改名为“进书日期开始”和“进书日期截止” ; 画一个矩形框包住所有查询条件,把矩形框背景设置为常规,背景色为深灰 色,特殊样式为凹陷,此时矩形框覆盖了其它控件,要用菜单中“格式” “置于底层”才能让它们显示出来; 在窗体上用向导建立一个按钮,按钮标题是“查询” ,名称是“cmd 查询” 先不管里面的代码,后面

7、再修改; 窗体属性中“记录选定器”否, “浏览按钮”否。 2. 利用向导设计子窗体利用向导设计子窗体 5 在主窗体中用工具箱中的“子窗体/子报表”对象建立一个子窗体; 以存书查询为记录源,选择所有字段; 把子窗体命名为“存书查询子窗体” ; 在主窗体上删除子窗体的标签,并重新调整子窗体的大小; 关闭主窗体的设计视图,单独打开子窗体数据表视图,调整字体和行的大小。 现在,我们得到了如下的窗体: 6 现在还没有实际的查询功能,我们在后面要根据所使用的方法,修改窗体并增 加一些其他的功能。 还有一些小的细节要注意,比如:按 tab 键后的获得光标的控件的顺序要在 设计视图下,视图菜单的“tab 键次

8、序”来修改;有些文本框获得焦点后是否 要打开输入法,比如输入单价和日期的地方要关闭,输入书名和作者的地方要 打开,这些要在控件属性中设置。 7 三三. 查询方法查询方法 1:在查询中加入条件:在查询中加入条件 这种方法对应的实例数据库是:“常用窗体查询 1.mdb” 。 1. 设计查询设计查询 我们打开“存书查询”设计视图如下: 在字段【书名】的准则格内写入: like iif(isnull(forms!存书查询窗体!书名),*,* 再看一下设置了条件的交叉表查询的 sql 语句: transform sum(存书查询.单价) as 单价之 sum select 存书查询.类别 from 存书

9、查询 where (存书查询.单价)=5) group by 存书查询.类别 pivot format(进书日期,yyyy/mm); 可见,where 是被插在中间的,所以我在生成 sql 语句时要用如下代码: strsql = transform sum(存书查询.单价) as 单价之 sum select 存书查询.类别 from 存书查询 strsql = strsql & where( & strwhere strsql = strsql & ) group by 存书查询.类别 pivot format(进书日期,yyyy/mm) 注意,在字符串中间要留一些空格,比如“from 存书

10、查询”的后面,如果不 留,sql 语句中“存书查询”和“where”会连在一起。这样肯定是错的。 显示交叉表的内容,不能直接刷新 me.存书查询子窗体.sourceobject = me.存书查询子窗体.sourceobject = 查询.存书查询_交叉表 这里也是一些人容易犯错的地方。因为子窗体里是查询对象,用 me.存书查询子窗体.requery 这样的语句是不能更新显示内容的。而要用 sourceobject 才能更新。如果子窗 24 体对象是窗体,而你又用 dao 改变了作为子窗体记录源的查询的 sql 语句, 也要用这种方法来更新显示内容。 刷新计数和合计显示 me.计数 = dco

11、unt(*, 存书查询_交叉表) me.合计 = dsum(单价, 存书查询, strwhere) 由于子窗体对象不是窗体了,自然就没有什么窗体页脚来让你设计合计字段。 所以用只好用 dcount 和 dsum 来统计了。 其他按钮的代码都有注释,我就不专门讲了。 2. 报表设计报表设计 为了适应交叉表查询列数不固定的情况,我在页面页眉、主体、报表页脚都设 计了一些名称有规律的标签、文本框。 打开查询 set rst = currentdb.openrecordset(select * from 存书查询_交叉表 where 1=2) 记录字段总数 intfieldsnum = rst.fields.count 可能大家对“where 1=2”这个条件比较迷惑,其实这是为了让这个 rst 没有 任何记录,因为我们需要的不是记录,只是各个字段的名字。这样也可以少占 用一些内存。 其他代码已经有注释了,我就不在这里解释。 3. 方法总结方法总结 在子窗体中直接使用交叉表作为子窗体源对象是最简单的方法。 交叉表查询中,日期类型的字段不能引用窗体上的控件作为准则。例如: between forms!存书查询窗体!进书日期开始 a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论