在查询和报表中使用参数_第1页
在查询和报表中使用参数_第2页
在查询和报表中使用参数_第3页
在查询和报表中使用参数_第4页
在查询和报表中使用参数_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、页码,1/17中国 (更改) | 所有站点登录Office Online (这是什么?) | 登录主页产品帮助和使用方法剪贴画模板Office Acs2008-4-2主页 产品 Ac s Ac s 2003 帮助和操作方法 创建与使用数据库和对象 数据库对象 查询 创建查询 参数查询主页 Ac s 主页产品信息 产品概述 新界面 十大优点 常见问题帮助和使用方法 Ac s 2007 帮助 Ac s 2003 帮助 Ac s 2002 帮助 Ac s 2000 帮助选择您的版本模板 Ac s 模板 加载项和更新技术资源 IT 技术中心 Office 开发中心(MSDN)安全性产品支持 最常见的产

2、品支持问题社区成员其他资源 第解决方案反馈 将您的意见发送给我们打印版在查询和报表中使用参数适用于:Office Ac s 2003检查免费更新Office当日的剪辑请将反馈发送给要做的事创建 Excel 图表更改 Outlook的外观Office 提示与技巧Office Ac s搜索 Ac s 2003搜索搜索页码,2/172008-4-2页码,3/172008-4-2页码,4/172008-4-2页码,5/172008-4-2页码,6/17页码,7/17页码,8/17页码,9/17全部显示2004 年 3 月 29 日作者:Sal Ricrdi查询和报表为您提供了查询数据库段。本文将向您介

3、绍如何应用参数更灵活地使用查询和报表,以及如何通过自己设计的窗体提供参数。供了数据库示例供您。还提适用于Office Acs 2003Acs 2002查看所有 Office 专栏查看专栏文章:如何计算经过的时间(2004 年 2 月 9 日)问题:如何创建一个查询,使我能更改条件值而无需每次都更改查询设计?您应在查询中使用参数。首先让根据使用环境考虑这一需求。数据库的主要用途是提供数据信息:“我公司最畅销的产品是什么?谁是的最佳客户?我公司在哪些方面没有达到销售目标?”所有这些问题都是您可能需要一个设计良好的数据库为您提供的信息。若要从 Acs 数据库中得到这些问题的条件。,您可以创建一个选择

4、查询,选择合适的表,然后输入所需的随着时间的推移,您通常会发现自己经常询问相同,也就是说会重复运行多次同样的查询。但有时在问题本身相同的情况下,搜索的值或条件发生了更改。例如,可能您今天希望查看饮料 (Beverages) 的销售情况,明天希望查看调味品 (Condiments) 的销售情况,而后天又希望查看糖果(Confections) 的销售情况(暂停一下,也要吃一块巧克力了)。这就意味着您必须在“设计”模式中打开查询,更改条件以指定饮料,运行查询,然后再次将其更改为调味品,运行查询,再次将其更改为糖果依此类推。如果您经常运行相同的查询但每次都更改查询条件,则使用查询参数将会节省您的时间。

5、通过使用查询参数,您可以创建一个查询,要求用户提供搜索值。这样,您就可以反复使用查询而无需更改查询设计。查询参数简介查询参数(通常称为参数)为实际值的占位符。若要使用查询参数,您必须首先打开现有的查询,或创建一个新的查询并重新选择表和字段。若要创建参数,请在查询设计网格的“条件”行中键入一个短语,包含在方括号中(请参阅下面红圈中的示例)。当您运行查询时,Acs 将方括号中的参数并提示您在“输入参数值”框中输入参数值。您输入的值将作为参数传送到查询中。就如同您在查询设计网格中直接键入了该值一样,但您已经无需更改查询设计了。请参阅如何创建使用参数计算复杂条件的查询 查询 III:创建可提示用户输入

6、的参数查询页码,10/17页码,11/17使用“查询参数”通常,您希望对“输入参数值”框框的显示顺序进行进一步的控制。例如,您可能希望首先显示“Category Name”提示,然后再显示“Enter Start Date”和“Enter End Date”参数提示。您可以使用“查询参数”框来完成此操作。若要打开“查询参数”框,请首先在“设计”视图中打开查询,然后在“查询”菜单上单击“参数”。您在“查询参数”框中输入的值可以进行两方面的控制:第一是显示参数的顺序,第二是应为每个参数输入的数据类型。若要填写该框,请按照您希望的参数显示顺序输入参数,请谨慎输入文本使其与查询设计网格中的文本完全相同

7、。您也可以在网格中选择文本,按 Ctrl+C,然后按Ctrl+V 将其粘贴到“查询参数”框的字段中。请注意,参数文本仅为方括号中的文字;不包含 Betn 和 And 等运算符。当您运行参数查询时,Acs 将使用您在“查询参数”框中选择的数据类型验证您输入的数据。例如,如果您选择了“日期/时间”数据类型并输入 2004 年 2 月 31 日(不存在的日期),Ac s 将显示错误消息“您为该字段输入的值无效”,并且您必须重新输入日期。如果您在“查询参数”框中输入参数而未指定数据类型,Ac s 将把输入的值转换为“文本”数据类型。使用自定义窗体收集参数用户询问更为频繁的一个关于参数是,如何使用窗体而

8、不是“输入参数值”框来将参数值传递给查询。使用窗体与使用“查询参数”框相比具有下列优点:如果有多个参数,您会发现使用窗体提交参数值要比使用多个提示对话框分别提交每个参数更为方便。多个“输入参数值”提示意味着您不得不单击“确定”或按 Enter 多次。如果您使用窗体,则可以一次输入所有的字段,然后单击“确定”或按 Enter 一次即可。您可以在提交窗体之前重新编辑刚刚输入的参数值。您可以按Shift+Tab 移至前一个字段并进行修改, 无需重新输入所有的参数值。通过使用窗体,您可以选择使用更适用于要输入的参数类型的控件,使输入参数值更加简单。例如, 您可以使用组合框来选择“Category”的值

9、,而无需在文本框中输入。页码,12/17您可以在窗体中附加使用 Visual Basic for Applications (VBA,Ac s 使用的编程语言) 编写的代码,从而使用更强大的数据验证功能,而不仅是 Ac s 通过“输入参数值” 框进行的简单数据类型检查。创建窗体以将参数传递给查询假设您希望查看一段时间内某种类别产品的销售汇录。您可以结合使用窗体、查询和简单的 VBA 代码。窗体的作用类似于标准的 Windows框,用于输入和编辑参数值。在您单击“确定”后,窗体会调用预先设计的与其相关的查询。以上显示的“Sales By Category Summary Query” 参数窗体包

10、含在示例数据库(英文)中,该数据库对这一技术进行了演示。若要创建该窗体,您需要执行多个步骤。我将首先对其进行综述,然后在需要的情况下提供每个步骤详细的操作说明,您可以展开下面的小节进行查阅。创建“Sales By Category Summary Query” 参数窗体新建窗体并添加输入参数所需的控件。修改查询使其从窗体上的控件获取参数值。在窗体上添加“OK”按钮,其作用为运行查询并关闭窗体。添加“Cancel”按钮,其作用为关闭窗体而不执行查询。首先,在“设计”视图中新建窗体,然后仔细选择并添加相应的控件以用于输入“Category”、“Start Date”和“End Date”参数(请参

11、阅下面关于每 个步骤的详细操作说明)。对于本例中的窗体,我选择使用组合框来选择产品类别,使用两个文本框输入日期。对于组合框,我选择“Categories”表作为行来源,这样 Acs 会自动使用所有类别名称填充组合框。下一步,通过设置必要的属性自定义窗体及其控件的行为和外观。例如,我将窗体的“边框样式”属性更改为“框边框”,因为我希望窗体边框的外观和行为与典型 Windows框相同。我还将“Category”组合框的“默认值”属性值更改为“Beverages”,使组合框包含预加载的值。以下是每个步骤的详细操作说明:详细步骤说明:新建窗体并添加控件以用于输入参数如果窗体及其控件都按照需要正常工作,

12、就可以保存窗体并开始修改相关的查询。首先请在“设计”视图中打开查询。然后修改查询使其窗体上控件中包含的数据(原先您曾使用方括号中的参数来传递数值)(具体操作请参阅详细步骤说明)。例如,如果需要 Acs 使用窗体上“Category”控 件的值作为查询中“Category”字段的参数值,请在查询设计网格的“条件”行中输入下列文本:Forms!Sales By Category Form!Category第一个组件 Forms 告知 Acs 查找“窗体”集合。Acs 使用多个集合,分别包括表、查询、报表、数据对象组织成集合。页,以及宏和模块。Acs 通常将第二个组件指定“窗体”集合中特定的窗体。在

13、本例中,窗体名称为 Sales By Category Form。第三个组件 Category 表示控件的名称。包含全部三个组件的名称(如此例所示)即为“完全符合要求”。有时您可以在名称中仅包含控件名称(而不是完全符合要求的名称),Acs 会自动确定其余组件。这并不是现在所要做的,因为需要将 Acs 指向特定的窗体。如果以相反的顺序在条件字段中输入的文本,也就是说告知 Acs获取“Category”控件中的值,而“Category” 控件在“Sales By Category页码,13/17Form”窗体中, 该窗体可以在当前打开的数据库的“窗体”集合中找到。该值即成为查询设计中该单元格的条件

14、,就好像您直接输入了该值一样。您可以采用相同的步骤为“Order Date”字段输入条件,替换 Ac s 将从中获取参数值的窗体中相应控件的名称。最后,您的查询设计应类似于下列文本:在本例中,我从 Acs 附带的 Northwind.mdb 示例数据库中了“Sales By Category”查询,修改后将其保存为“Sales By Category Query”。以下是每个步骤的详细操作说明:详细步骤说明:修改查询使其从窗体上的控件获取参数值在参数窗体中添加命令按钮若要提供一种提交参数或取消查询途径,您需要添加两个命令按钮。通常这两个按钮是“OK”和“Cancel”。如果您已完成输入参数并准

15、备提交查询,可以单击“OK”。如果您改变了想法并且不希望运行查询,可以单击“Cancel”。添加“OK”和“Cancel”按钮的过程非常简单。若要添加命令按钮,请在“设计”视图中打开窗体,选择“工具箱”,然后单击“工具箱”中令按钮”。如果“工具箱”不可见,请在“视图”菜单上单击“工具箱”。然 后,在工具箱中单击“命令按钮”,将鼠标指针移至窗体上方,然后单击鼠标创建命令按钮。如果显示“命令按钮向导”,请单击“取消”。执行上述操作创建“OK”按钮,然后再次执行上述操作创建“Cancel”按钮。这时两个按钮通常具有 Acs 自动生成的名称,类似于“d1”和“d2”(或“d”和其他数字的组合)。然后,

16、右键单击第一个按钮并单击“属性”。显示“属性”窗口后,将标题更改为“OK”。然后单击“事件”选项卡。显示“事件”选项卡后,单击 “单击”事件字段。只要您在“窗体”视图中单击命令按钮,即触发“单击”事件。通过为该事件添加 VBA 代码,您可以告知 Ac s 在用户单击命令按钮时执行何种操作。请单击字段旁边显示的省略号按钮 (.)。Acs 将显示“选择”框。请单击“代码”,然后单击“确定”。在代码编辑器中输入下列代码,使 OK_Click 过程如下所示:Private Sub OK_Click() Me.Visible = FalseDoCmd.Open Query Sales By Catego

17、ry Query, ac ViewNormal, DoCmd.Close acForm, Sales By Category FormEnd Sub该过程首先隐藏参数窗体并使其不可见。然后 DoCmd.OpenQuery 语句运行名为“Sales By Category Query”的查询。该查询中的参数控件中的值。调用查询后,该过程将关闭参数窗体。了窗体上“Cancel”按钮的“单击”事件也需要添加少量的 VBA 代码。首先,右键单击第二个按钮并单击“属性”。显示“属性”窗口后,将“标题”属性更改为“Cancel”。然后单击“事件”选项卡。显示“事件”选项卡后,单击“单击”事件,然后单击省略

18、号按钮 (.)。显示“选择”框后,请选择“代码”,然后单击“确定”。在代码编辑器中输入下列代码,使Cancel_Click 过程如下所示:Private Sub Cancel_Click() DoCmd.Close Close Form页码,14/17End Sub完成编辑代码后,请在“文件”菜单上单击“保存”。然后在“文件”菜单上,单击“关闭并返回到Office Acs”。最后, 关闭除数据库窗口外的其他所有窗口。您已经完成了所有工作啦!现在您就可以运行 “Sales By Category Form” 窗体,该窗体会依次运行参数查询。在本部分的示例数据库中包含的“Sales By Cate

19、gory Form”窗体和“Sales By Category Query”查询演示了上述技术。在报表中使用参数带有参数的查询非常适用于问题的查询和的显示,特别是需要经常变更查询条件的情况下。但是有时您需要对问题的数据显示进行更全面的控制,需要更灵活地组织和显示汇总信息,并需要更好地支持信息的打印,特别是打印多页信息数据的情况下。对于这样的需求, 您需要使用报表。Acs 的报表设计功能提供了多种灵活的方式用于信息显示。其灵活性还包括选择报表的数据源。例如,您可以基于表、查询或“结构化查询语言”(SQL) 代码来创建报表。SQL 是查询、更新和管理数据库常用的语言。所有的 Acs 查询都基于 S

20、QL 来实现。由于可以根据查询创建报表,您也可以使用参数查询。若要实现该操作,请将报表的“源”属性设为参数查询的名称。首先在“设计”视图中打开报表,然后在“编辑”菜单上单击“选择报表”。最后在“视图”菜单上单击“属性”。然后您可以单击“源”组合框并选择查询或表。“源”属性将告知Acs 报表数据的来源。当您运行报表时,Acs 会运行查询并提示您输入参数值,如同直接运行查询时提示您输入参数值一样。使用的每一个参数都会使 Ac s 运行报表时显示一个“输入参数值”框,因此如果您使用了多个参数,也可以考虑在此使用窗体。示例数据库中的“Sales By Category Report”报表演示了使用窗体

21、将参数提交到报表的过程。该过程依赖于 Ac s 处理事件的顺序。创建窗体为报表应用参数Acs 使用一种同时由系统和用户触发并生成事件的模型。例如,单击鼠标生成事件。在 Acs 中打开窗体生成多个事件。甚至运行报表也会生成一系列事件。其中许多事件可以使用 VBA 代码进行响应。事实上对事件作出响应是自定义 Acs 数据库的一种主要的方式。因此,了解需要对何种事件作出响应非常重要。当 Acs 打开报表时,首先运行与报表的 Open 事件相关的代码。由于 Acs 会首先处理 Open 事件,然后再运行生成报表数据的查询,您可以通过 Open 事件运行一个窗体,并使用该窗体向查询提供参数。这就是示例数

22、据库中“Sales By Category Report”报表的基本原理。以下是实现该方法的具体步骤:打开报表。Acs 处理与报表的 Open 事件相关的代码。这部分代码打开用于收集参数的窗体。输入参数并单击“OK”。Acs 隐藏窗体,但窗体并未关闭。页码,15/17Acs 处理将生成报表数据的查询。查询从已经隐藏的窗体上的控件获取参数值,执行查询,然后将结果传递到报表。完成报表并显示结果。当您关闭报表时,与报表的 Close 事件相关的代码会关闭已经隐藏的窗体。为了演示相关技术,我创建了名为“Sales by Category Dialog”的窗体和名为“Source Query for S

23、ales By Category Report”的查询,然后修改了Acs 附带的 Northwind.mdb 示例数据库中的“Sales By CategoryReport”报表的一个副本。当您打开修改后的报表并准备进行打印或查看时,报表会首先打开一个窗体以收集参数。然后 Acs 会运行查询来向报表提供数据 查询会将窗体控件中的数值赋给报表中的参数。您可以在示例数据库中找到相关的窗体、查询和报表。若要在报表的 Open 和 Close 事件中输入代码,请在“设计”视图中打开报表。然后在“编辑”菜单上单击“选择报表”。然后在“视图”菜单上单击 “属性”。单击“事件”选项卡,然后单击“打开”属性。

24、单击字段旁边显示的省略号按钮 (.)。显示“选择器”,然后单击“确定”。”框后,请单击“代码生成“Sales By Category Report”报表的 Close 和 Open 事件中的 VBA 代码如下所示:Private Sub Report_Close()DoCmd.Close acForm, Sales By Category Dialog End SubPrivate Sub Report_Open(Cancel Aseger) Set public variable to true to indicatet the repor ishe Open eventb InReport

25、Open Event = True Open Sales By Category DialogDoCmd.Open Form Sales By Category Dialog, , , , , acDia Cancel Report if User Clicked the Cancel ButtonIf IsLoaded( Sales By Category Dialog) = False Then Can Set public variable to false to indicate Open event is completed b InReportOpen Event = FalseE

26、nd Subt the报表的 Open 事件过程 (Report_Open) 首先将变量 bInReportOpenEvent的值设为 True,以表表的 Open 事件正在执行。这部分代码会首先执行,以便其他过程(特别是“Sales by Category Dialog”的 Open 事件过程)可以该变量以确定报表的 Open 事件是否正在执行。然后,DoCmd.OpenForm 语句打开窗体以便用户输入参数值。当您单击“OK”或“Cancel”提交窗体时,相关代码会检查窗体是否关闭(即确认您单击了“Cancel”)。请回忆一下,如果您单击“OK”,则会隐藏窗体,而参数仍可用于生成报表数据的

27、查询。如果已关闭窗体,则会取消报表。最后,bInReportOpenEvent 变量被设为 False 以表成。表的 Open 事件已完报表的 Close 事件代码相对比较简单,只是在关闭报表时关闭隐藏的窗体。页码,16/17在窗体的事件中加入代码用于创建“Sales by Category Dialog”窗体的步骤与早先用于创建窗体以用于向查询提交参数的步骤相同。不同之处并非在于创建窗体的方式,而是为窗体事件添加的代码。例如,由于该窗体应直接被报表的 Open 事件调用(而不是通过其自身或其他过程调用),窗体的 Open 事件包含对其(打开条件)进行检验的代码。“Sales by Categ

28、ory Dialog”窗体的代码如下所示:Private Sub Cancel_Click() DoCmd.CloseEnd SubPrivate Sub Form_Open(Cancel Aseger)If Not bIn Report OpenEvent Then If were not called from the reportMsgBox For use from the Sales By Category Report only, Cancel = TrueEnd If Form_Open_Exit:Exit Sub End SubPrivate Sub OK_Click() Me.Visible = FalseEnd Sub打开窗体时,Acs 会调用窗体的 Open 事件过程 (Form_Open)。其中的代码检验并确定报表的 Open 事件是否正在执行。如果未执行,则认为窗体已被报表外的其他对象或代码打开。例如,可能从数据库窗口中直接打开了窗体。由于窗体并未设计为用于这种方式,窗体代码将显示相应的提示信息

温馨提示

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

评论

0/150

提交评论