说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VBA编制Access的查询程序

HTML文档下载 WORD文档下载 PDF文档下载
用VBA编制Access的查询程序

在 Access 中 ,要设计一个查询程序是十分快捷的。它提供的查询向导,可以一步步地引导程序员迅速建立查询 ,并可用 SQL 及 Design 方式查看 。另外 ,它所提供的QueryDefs 对象,则可以方便地用 VBA 编制出基于特殊要求的查询程序。
下面三个例子就是用VBA 实现查询功能的程序。
简单查询
在FORM mainform上定义按钮 cmd-qry-status-1,当鼠标点击按钮它时,将创建Query qry-status-1 并打开FORM frm-qry-status-1。定义FORM frm-qry-status-1 的数据源为 Query qry-status-1。
程序1:
Private Sub cmd-qry-status-1-Click()
Dim qry-tmp As QueryDef
Dim dbs-itsr As Database
Dim strsql As String
Dim stDocName As String
Dim stLinkCriteria As String
Set dbs-itsr = CurrentDb()
strsql = ″SELECT * FROM Request WHERE (((Request.Status)=1));″
For Each qry-tmp In dbs-itsr.QueryDefs
If qry-tmp.Name = ″qry-status-1″Then
dbs-itsr.QueryDefs.Delete qry-tmp.Name
End If
Next qry-tmp
Set qry-tmp = dbs-itsr.CreateQueryDef(″qry-status-1″, strsql)
On Error GoTo Err-cmd-q-y-status-1-Click
stDocName =″frm-qry-status-1″
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit-cmd-qry-status-1-Click:
For Each qry-tmp In dbs-itsr.QueryDefs
If qry-tmp.Name =″qry-status-1″ Then
dbs-itsr.QueryDefs.Delete qry-tmp.Name
End If
Next qry-tmp
Exit Sub
Err-cmd-qry-status-1-Click:
MsgBox Err.Description
Resume Exit-cmd-qry-status-1-Click
End Sub
参数查询
当要求查询条件可以变更时,需要设计参数查询。例如,希望 Request.Status 的值
可以在执行前输入,定义一查询参数 par-status 。本例中,在FORM mainform 上定义
COMMAND 按钮 cmd-qry-par-status, 在其event属性的 on click 项中建立如程序2所示程序,当鼠标点击按钮 cmd-qry-par-status时,将创建Query qry-par-status 并打开Qu
ery qry-par-status。
程序2:
Private Sub cmd-qry-par-status-Click()
Dim qry-par As QueryDef
Dim dbs-itsr As Database
Dim strsql As String
Set dbs-itsr = CurrentDb()
strsql=″PARAMETERS [par-status] Long;″& _
″SELECT * FROM Request WHERE
(((Request.Status)=[par-status]));″
For Each qry-par In dbs-itsr.QueryDefs
If qry-par.Name = ″qry-par_status″ Then
dbs-itsr.QueryDefs.Delete qry-par.Name
End If
Next qry-par
Set qry-par = dbs-itsr.CreateQueryDef(″qry-par-status″, strsql)
On Error GoTo Err-cmd-qry-par-status-Click
DoCmd.OpenQuery qry-par.Name
Exit-cmd-qry-par-status-Click:
Exit Sub
Err-cmd-qry-par-status-Click:
MsgBox Err.Description
Resume Exit-cmd-qry-par-status-Click
End Sub
复杂查询
当查询条件在多个查询中共用时,如果用参数查询,则每个查询执行前需输入参数值,这样很不方便,而将此条件设计成变量则可实现复杂查询的设计。在本例中,在FORMmainform上定义TEXT BOX user-num,其值在查询中充当参数的作用。定义按钮cmd-qry-mul-app, 在其event属性的 on click 项中建立程序,执行时,先输入user-num 值,当鼠标点击按钮 cmd-qry-mul-app时,将创建Query qry-mul-app 并打开FORM frm-qry-mul-app。在FORM frm-qry-mul-app上定义 TEXT BOX closed-num,其数据源项填入″=[user-closed-num]″,定义FORM frm-qry-mul-app 的数据源为 Query qry-mul-app,在其event属性的 On load 项中建立如程序3所示程序(其中定义了Public变量 user-closed-num)。FORM frm-qry-mul-app 在Load 时,将创建基于qry-mul-app的查询qry-mul-app-1,并将其记录数赋予变量 user-closed-num。这样,当FORM frm-qry-mul-app 打开时,TEXT BOX closed-num 将获得要求的记录。
程序3:
Option Compare Database
Option Explicit
Public user-close-num As String
Private Sub Form-Load()
Dim qry-mul As QueryDef
Dim dbs-itsr As Database
Dim strsql As String
Dim rstreq As Recordset
Set dbs-itsr = CurrentDb()
strsql =″SELECT * FROM qry-mul-app WHERE ((Request.Status)=1);″
For Each qry-mul In dbs-itsr.QueryDefs
If qry-mul.Name =″qry-mul-app-1″ Then
dbs-itsr.QueryDefs.Delete qry-mul.Name
End If
Next qry-mul
Set qry-mul = dbs-itsr.CreateQueryDef(″qry-mul-app-1″, strsql)
On Error GoTo Err-qry-mul-app-Click
Set rstreq = qry-mul.OpenRecordset
rstreq.MoveLast
user-close-num = rstreq.RecordCount
rstreq.Close
Exit-qry-mul-app-Click:
Exit Sub
Err-qry-mul-app-Click:
MsgBox Err.Description
Resume Exit-qry-mul-app-Click
End Sub
C语言创建链表并实现插入、删除数据 C语言中队列Queue的操作 C语言实现堆栈stack操作 C语言建立和遍历二叉树 C语言冒泡排序法演示代码 C语言实现堆排序(Heap Sort) jQuery Ajax以JSON格式传递结果数据 微软称为WP8开发的应用不兼容WP7手机 WP8开发者必读 关于WP8开发者程序开发语言选择倾向的问题 强大的C#随机字符串生成器 C#上传文件到WEB服务器 WebClient的超时设置 MySQL备份脚本大全 c#对rar或zip文件进行压缩解压缩 c#采用递归非递归两种方式遍历目录下所有文件 使用DataContractJsonSerializer进行JSON序列化的JSONHelper类 宏病毒ToDOLE及专杀工具 如何构建和运行基于cocos2d的HelloWorld程序 C# .net 2.0 以Gmail发送Smtp邮件 ASP.NET优化性能方法之一:禁用调试模式 开源SMTP和POP3邮件服务器 三星:在专利上不会和苹果妥协 不止谷歌,微软也有自己的眼镜计划?! Windows 8商店应用总数突破20000大关 硝烟弥漫:三星起诉苹果最新iPad、iPod侵权 效仿Google Facebook欲整合Instagram用户数据 与苹果全面竞争?传微软明年推Xbox机顶盒 微软Ralph Haupter:WP8即将在中国上市 开发者黄金时代来临 Paul Graham:Y Combinator创始人成长轨迹 我们需要强密码吗? 请教,我安装了java sdk后又安装了oracle 8,为什么安装后就有‘java.exe 错误,内存只读的错误’? 如何把數據庫中查詢得到的表導入到excel生成報表? 请问用MAIL如何写信 我也来出一道智力题,30分钟内做不出的只有高中生水平 如何在VC中打开别一个窗口或DIALOG 请问Sendmail是否是SOLARIS中必要的 关于代码动态编译的问题,bucher (无人永生) 以及所有会这方面的人请进!!!急!!! Duvessa发布基于用例的估算工具 log4j问题 Borland发布C++ BuilderX整合UML 关于动态创建数据窗口的问题,请各位大虾帮忙,答对的给100分 请教关于打包的问题? 【【【 asp.net 中Excel现程怎么杀掉!!!! 】】】 如何在HTML中嵌入ftpClient功能 請求幫助 一个关于父子进程的问题,请大家帮帮忙好吗?急死我了! 【调查】看看你对流行音乐到底懂得多少? 有没有办法禁止类似用CCPROXY的非法代理? CSS的使用问题 怎样适用odbc连接远程access? DelPhi的错误! 如何通过共享Model上网? 用FileSystemObject 写多行txt,如何实现换行写入??? 你的邮箱已经被别人使用,请使用一个DOMINO服务器,如何解决? 清空文本文件 我编写了一个dos批处理文件bat,要在bat文件运行后自动关闭dos窗口怎么办? 急救:机器出问题了,大家帮忙看看 谁能谈谈XP的激活问题!? 有问题的问题1 有问题的问题 安装visual studio.net 2003 的问题? 急件!请教了,如何在一个字符串中提取第n次出现的字符? weblogic及EJB属于中间层的吗? 到水园第一件事就是看看斑竹有没有换,嘻嘻,还有谁也是这样的? win2000装好后,设了本地连接的属性,和别的机器一样的设,可就是PING 不通网关 哪有“VB.NET高级编程”和“ADO.NET高级编程”下载?? 请各位帮忙找一个用asp.net写的日历,急用 小弟是菜鸟,请问一下svrmgrl是什么,9I中有吗? 文章分页,而且文章中有大小不等的图片,该如何去做 求《三国霸业2》简体版下载地址? 诸位高手,我碰到一个很棘手ASPNETMENU的问题!急需解决!!(100分)献上! vfw下的视频采集和图象截取的问题请教! 求 《家园-惊世浩劫》简体版 关于浏览器的问题 pb如何调用word文挡? 在使用mfc时选择不同语言,怎么最后编译执行时有??符号(在菜单中) 网络共享安全问题!!!!!!!!!!!!! 我是第一次尝试做网站,碰到了问题,能帮帮我吗? 电话号码的正确性问题? 求教c#中datagrid表格设置 高分求远程开机源代码 这段代码我还是不理解函数递归我觉得应该输出10 9 8 7 6 5 4 3 2 1 0 结果:10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 虽有槁暴中的通假字是? 找出句中的通假字,并写出相通之字.虽有槁暴,不复挺者; 君子生非异也 虽有槁暴 这句话中的通假字 什么感情适合深埋心底? 怎样将一份感情埋藏在心底 义务教育五年级上学期数学寒假作业48页第一题解法; 银杏英文名字gingko gingkgo 两种写法哪个更常用.Ginkgo 请指出下面几个并称的文学人物指的都是谁.陶谢—— 王扬—— 小李杜—— “陶谢”指的又是哪两位文学人物? B,C,D依次为线段AE上三点,已知AF=8.9cm,BD=3cm,则以A,B,C,D,F这五点为端点的所有线段的长度之和等于多少厘米 叙问题特使将抵达叙利亚 筹备日内瓦国中国首支海军核潜艇部队 42年潜行百19岁坚强女孩爬行上大学:选择学医将女学生被抱养18年无户口 相关部门称瞭望:以宏大的高素质人才队伍托起中国香港不满马尼拉向华人筹募赔款 港媒骂浙江国企力邀民企加盟 推3244亿元宁波大学举办“国际文化日”国务院部署推进公司注册资本登记制度改《我是特种兵之火凤凰》演员拍摄搞笑花不留遗憾,5对老夫妻补拍婚纱照你可以试试看沉睡海底200多年的清代古船这是要把马云打跑的节奏吗去年的诺贝尔经济学奖得主来宁波交警将开辟专用通道非物质文化遗产进入兰园跌破10元/斤有毒的爱开发区继续推进2号渠河道治理工作明年跑上杭州街头从未谋面的弟弟的话让她感动乡美春色末日刀锋恐怖禁域海防卫士之前哨利刃混沌神光尨纹野史鬼鉴黑白宿怨学长大人散装斗皇飞星破晓汴河旅游嵩山地质博物馆旅游汉封将军柏旅游周王城广场旅游牡丹广场旅游八路军驻洛办事处旅游萧红故居旅游晓园公园旅游雷锋纪念馆旅游韶峰古寺旅游刘少奇故里旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘