资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数据库技术与应用,基于,Access,第4章 窗体设计,学习目标,知识目标:,了解各种窗体的相关知识、各种窗体控件基本属性、常用窗体事件的设置。,技能目标:,能够按照要求,采用正确的方法创建符合要求的各种窗体,并能按照要求为窗体设置常用的事件。,能力目标:,能够根据需要,灵活选择和应用不同的窗体,分析与解决窗体应用中的实际问题。,引例:,“,罗斯文,”,数据库中的订单窗体,在,“,罗斯文,”,数据库中有一个订单窗体它的运行界面如图4-1,它以漂亮的窗体界面将多个数据库和查询作为数据源,使它们协调地在一个窗体中显示互为相关的内容并允许用户编辑部分数据,还利用了事件、宏等处理技术,自动完成了很多需要在多个数据表中重复处理的工作。,图4-1,“,罗斯文,”,数据库的订单窗体,窗体的定义及作用,窗体是,Access,数据库对象之一,是数据库与,Access,应用程序的接口,窗体有多种形式,不同的窗体完成不同的功能。,利用窗体,用户可以方便地录入、修改、查询数据库记录,同时也可以避免因为直接操作数据库而导致的对数据库的破坏。,在窗体中可以加入各种控件,并根据使用需要设置各种事件,使窗体的使用更为方便、灵活。,窗体的结构,窗体的视图有5种:设计视图、窗体视图、数据表视图、数据透视表视图和数据透视图视图。,设计视图用于创建、修改窗体。,窗体视图通常每次只能查看一条记录。,数据表视图用于查看以行与列格式显示的记录,因此可以同时看到许多条记录。,数据透视表视图和数据透视图视图,可以动态地更改窗体的版面,从而以各种不同方法分析数据。可以重新排列行标题、列标题和筛选字段,直到形成所需的版面布置为止。每次改变版面布置时,窗体会立即按照新的布置重新计算数据。,窗体的结构,图4-2 窗体中节的说明,窗体的组成,窗体可为窗体页眉、页面页眉、主体、页面页脚和窗体页脚5个节。所有窗体都有一个主体节,最多可有5个节。可根据需要随时添加窗体页眉、页面页眉、页面页脚和窗体页脚节,并在各个节中,添加不同的控件。,窗体的分类,纵拦式窗体:,该窗体每次只显示1条记录,适用于字段多、记录少的情况。,表格式窗体:,可以在一个窗体上显示多条记录,适用于记录多的情况,数据表窗体,:按数据表格式在一个窗体上显示多条记录,在同样大小的情况下,显示的记录最多。,主/子窗体:,在窗体中显示两个关系为一对多的表或查询,移动主窗体的一条记录,自动显示对应子窗体的相关记录。,数据透视表窗体,:以指定的数据表或查询为数据源产生的,Excel,分析表形式的窗体。,图表窗体,:该窗体以图表的方式分析数据,可单独或以子窗体的形式使用它。,窗体中的控件,窗体中的所有信息都包含在控件中。控件是窗体用于显示数据、执行操作或装饰窗体的对象。控件可以是绑定、未绑定或计算型的。,绑定控件与基础表或查询中的字段相连,可用于显示、输入及更新数据库中的字段。,未绑定控件没有数据来源。未绑定控件可用于显示信息、线条、矩形及图像。,计算控件以,表达式,作为数据来源。表达式可以使用窗体或报表的基础表或基查询字段中的数据,也可以使用窗体或报表上其他控件中的数据。,窗体设计视图中的工具箱,图4-3“设计视图”中的工具箱,使用“自动窗体”创建窗体,“自动窗体”创建显示基础表或查询中所有字段和记录的窗体。利用“自动创建窗体”向导可以创建三种窗体:纵栏式窗体、表格式窗体和数据表式窗体。,使用窗体向导创建窗体,使用窗体向导可以控制窗体中显示的字段,窗体布局、风格等;可以创建基于多个数据来源的窗体,如果这多个表间有关系,还可创建带有子窗体的窗体或链接窗体。,【例4-1】,创建汽车销售系统的类别窗体,如图4-4所示。,要求:以类别表和产品表为数据源,使用窗体向导创建名为“类别”的窗体。,分析:类别窗体初看起来比较复杂,窗体内容分为上下两部分,又有图片、但仔细观察窗体的布局比较粗糙,且类别表与产品表之间已用“类别,ID,”,字段建立了“一对多”的关系,故利用窗体向导可方便的创建汽车销售系统的类别窗体。,在窗体设计视图中创建窗体,一个数据库应用系统不仅要设计合理,而且还应该有一个功能完善、外观漂亮的用户界面。利用向导创建窗体,虽然非常便捷,但略显模式化。对于个性化的窗体设计,必须在窗体设计视图中来进行。,使用窗体设计视图创建窗体,一般操作步骤如下:,首先创建空白窗体。,选定窗体对象,然后单击数据库窗口工具栏上的,“,新建,”,按钮,得到图,4-5,。,在新建窗体对话框中,单击,“,设计视图,”,。,选择作为窗体数据来源的表或其他记录源的名称。,向窗体添加页眉/页脚、控件。,设置各对象(窗体、控件)的属性。,优化窗体设计。例如:外观、控件大小、位置等。,复杂的窗体还需编写方法、事件过程代码。,【例,4-2,】,创建客户电话列表窗体,如图4-12所示。,要求:只能浏览窗体,不能编辑窗体中的数据,在浏览窗体的过程中,每页显示多条客户信息,但只显示一条黄色背景的标题行。,图4-12 客户电话列表窗体,分析:虽然客户电话列表窗体看起来非常简单,如果使用窗体向导创建表格式或数据表式的窗体,不能按图4-12显示相应的信息,达不到规定的显示效果,因此不能简单地利用窗体向导创建该窗体,可以利用系统提供的窗体设计视图进行创建。,从窗体的名称及图4-12显示的内容来分析,可以很容易的判定所要创建的窗体其数据源为客户表。在窗体页眉区域设计的内容,显示在窗体之上,且只显示一次,在窗体主体区域设计的内容,会在窗体中连续分页显示。因此要求中所提的“每页显示多条客户信息,但只显示一条黄色背景的标题行”这个要求,可以很容易的在窗体设计视图中分别设计窗体页眉和窗体主体来满足。,创建步骤:,1)创建空白窗体。,2)添加窗体页眉/页脚,3)向窗体添加控件,4)设置各对象(窗体、控件)的属性,5)将设计结果保存为“客户电话列表”窗体。,窗体基本控件的应用,属性:,在,Access,中,窗体、节以及添加到窗体上的控件统称为对象。对象都具有自己的属性、事件和方法。对象的属性决定对象的结构、外观和行为,属性包含格式、数据、事件、其它4种。,设置属性具体操作方法如下:,(,1,)在窗体设计视图中,选择要设置其属性对象。,(,2,)在所选择的对象上单击鼠标右键,然后单击快捷菜单上的,“,属性,”,命令,或单击工具栏上的,“,属性,”,按钮,显示属性表。,(3)单击需要设置其值的属性,然后进行设置。,窗体常用属性,边框样式、控制框、最大最小化按钮、关闭按钮、滚动条、浏览按钮、记录选定器、快捷菜单、自动居中、允许编辑、允许删除、允许添加、数据入口、默认视图、允许的视图、记录源、筛选、排序依据、,允许筛选。,标签,可以在窗体上使用标签来显示说明性文本,标签并不显示字段或表达式的数值;它们总是未绑定的,而且当从一个记录移到另一个记录时,它们的值都不会改变。,创建文本框时,将有一个附加的标签显示此文本框的标题.,创建标签的方法是单击在工具箱中的“标签”工具按钮,在窗体中单击要放置标签的位置,然后在标签上键入相应的文本。,文本框,文本框的类型有三种:绑定型、未绑定型或计算型。,绑定型文本框能够从表、查询或,SQL,语言中获得所需要的内容。,未绑定型的文本框,一般用来显示提示信息或接受用户输入数据,在未绑定型文本框中的数据并没有保存在任何位置。,计算型文本框中,可以显示表达式的结果,当表达式发生变化时,数值就会被重新计算。,文本框操作,(,1,)创建未绑定,型,文本框,(,2,)创建绑定型文本框,(,3,)将文本框绑定到数据源,(,4,)文本框的属性,文本框的格式属性:,文本框的数据属性:,文本框控件的事件属性,复选框、选项按钮和切换按钮,在窗体上可以使用复选框、选项按钮或切换按钮作为单独的控件来显示基础记录源的“是/否”值。如果选择了复选框、选项按钮或切换按钮,其值则为“是”;如果未选择,其值则为“否”。选中或清除与,Access,数据库中的“是/否”字段绑定的选项按钮时,基础表中的值按照字段的“格式”属性显示(“是/否”,“真/假”,或“开/关”)。,创建步骤,创建绑定到数据的复选框、切换按钮、选项按钮的步骤如下:,(,1,)在工具箱中单击所需的复选框、切换按钮、选项按钮工具按钮。,(,2,)单击工具栏上的,“,字段列表,”,按钮来显示字段列表。如果字段列表按钮或命令无效,则必须使用,“,记录源,”,属性来将窗体绑定到记录源。,(,3,)单击字段列表中,“,是,/,否,”,数据类型的字段,将其拖动到窗体。,(4)如果需要,可以更改标签的文本内容。,选项组,可以在窗体中使用选项组来显示一组限制性的选项值。在选项组中每次只能选择一个选项。,在窗体中,选项组含有一个组框架和一系列复选框,选项按钮和切换按钮。如果选项组绑定到某个字段,则只有组框架本身绑定到此字段,而不是组框架内的复选框、选项按钮或切换按钮。可以为每个复选框、选项按钮或切换按钮的“选项值”属性设置相应的数字。在选项组中选择选项时,,Access,将该选项组所绑定之字段的值设置为所选选项的“选项值”属性值。,【例,4-3,】,在窗体中创建“打印标签”选项组,要求:新建一个空白窗体,利用向导在空白的窗体设计视图中添加如图所示的“打印标签”选项组。并以“客户标签对话框”为窗体名保存。,分析:,按照要求,观察图4-19可以看到“打印标签”选项组中包括选项组包含多个控件,分别命名为,“所有城市”选项按钮、,“指定城市”选项按钮、,“打印标签标签”标签、,“所有城市”标签、,“指定城市”标签。,注意在创建这个选项组的过程中一定要使所有控件的名字要与所命名的相同,并不绑定数据源。,创建步骤:,(,1,)新建一个不基于任何表的空白窗体,单击,“,选项组,”,按钮。,(,2,)在选项组向导一中输入两个标签内容,“,所有城市,”,和,“,指定城市,”,后单击,“,下一步,”,按钮。,(,3,)在弹出的选项组向导二中确定,“,所有城市,”,为默认选项后单击,“,下一步,”,按钮。,(,4,)在弹出的选项组向导三中为标签选项赋值,,“,所有城市,”,为,1,,,“,指定城市,”,为,2,,之后单击,“,下一步,”,按钮。,(,5,)最后输入选项组标题为,“,打印标签,”,后单击,“,完成,”,按钮。,(,6,)调整选项组的位置和大小。,(,7,)右击,“,打印标签,”,组合框,在快捷菜单中选,“,属性,”,,然后按图,4-20,修改名称属性值,“,打印标签,”,。依次选中其他,5,个控件,分别设置其名称属性值为,“,所有城市,”,、,“,指定城市,”,、,“,打印标签标签,”,、,“,所有城市,”,、,“,指定城市,”,后选项组创建完成。,(,8,)保存窗体为客户标签对话框,列表框和组合框,列表框和组合框方便了用户键入值的操作,可以从列表中直接选择需要的值。,列表框中的列表是由数据行组成的,列表框中可以有一个或多个字段,每栏的字段标题可以有也可以没有。,如果一个多列的列表框是绑定列表框,可以在其中的列保存数值。,组合框占用一行,打开后才显示列表内容,不需要太多的窗体空间。组合框中可以输入列表中没有的值,而列表框不允许。,创建列表框、组合框,利用窗体向导创建窗体时,对于记录源中的,“,查阅,”,字段,,Access,将自动创建查阅列表框或组合框。,在窗体设计视图中,对于记录源中的,“,查阅,”,字段,从字段列表将,“,查阅,”,字段拖动到窗体中,将自动创建查阅列表框或组合框。,也可利用,“,控件向导,”,创建绑定或未绑定组合框或列表框,【例4-4】在窗体中利用向导创建“供应商”组合框,要求:新建一个以“产品”表为数据源的“示例”窗体,在上面利用向导建立一个如图4-21所示的显示“供应商”表中供应商名称的组合框,为“产品”表中的“供应商,ID”,字段输入数据。,图,4-21,“供应商”组合框,分析:,新建组合框本身并不复杂,关键是要隐藏“供应商,ID”,列,只显示“公司名称”字段。并理解虽然在组合框内选择的是公司名称,但实际保存的是供应商,ID,的代码。,创建步骤:,在设计视图中新建一个基于产品表的空白窗体。单击窗体工具箱中的,“,组合框,”,按钮,在弹出的组合框向导中选择,“,使组合框在表或查询中查阅数值,”,后单击,“,下一步,”,按钮。,在弹出的组合框向导中选择,“,供应商,”,表后单击,“,下一步,”,按钮。,在弹出的组合框向导中选定可用字段为,“,供应商,ID,”,及,“,公司名称,”,两字段后单击,“,下一步,”,按钮。,在弹出的组合框向导中选择以,“,供应商,ID,”,升序排列,在弹出的组合框向导中选中,“,隐藏键列(建议),”,复选框后单击,“,下一步,”,按钮。,在弹出的组合框向导中择,“,将该数值保存在这个字段中,”,选项并选择,“,供应商,ID,”,字段,单击,“,下一步,”,按钮。,最后输入组合框标题为,“,供应商,”,后单击,“,完成,”,按钮创建了一个绑定的组合框。,命令按钮,在窗体可以使用命令按钮来执行某个操作或某些操作。例如,可以创建一个命令按钮来打开另一个窗体。,使用,“,命令按钮向导,”,可以创建,30,多种不同类型的命令按钮。在使用,“,命令按钮向导,”,时,,Access,将提示输入所需的信息并根据用户的回答来为用户创建按钮及事件过程。当用户运行窗体时,只要单击命令按钮,即可自动执行相应的操作。,【例,4-5,】创建命令按钮实例,要求:在上例创建的,“,示例,”,窗体中添加如图,4-25,所示的,“,第一项记录,”,、,“,前一项记录,”,、,“,下一项记录,”,、,“,最后一项记录,”,及,“,关闭窗口,”,5,个命令按钮。这些按钮要能控制供应商表的记录移动。,图4-25添加了命令按钮的是“示例”窗体,分析:,添加命令按钮并困难,要使它们能够控制供应商表的记录移动,关键是要使用向导,并在向导中选择合适的动作和提示文本或图片。,操作步骤,:,(,1,)单击,“,命令按钮,”,工具。,(,2,)在窗体中单击要放置命令按钮的位置。,(,3,)在弹出的命令按钮向导中选择类别为,“,窗体操作,”,、操作为,“,关闭窗体,”,后单击,“,下一步,”,按钮。,(,4,)在弹出的命令按钮向导中选择文本后单击,“,下一步,”,按钮。,(,5,)在弹出的命令按钮向导中指定按钮的名称为,“,关闭窗体,”,后单击,“,完成,”,按钮。,(,6,)重复步骤,(2)(5),并分别选择,“,记录浏览,”,类别下的,“,转至第一项记录,”,、,“,转至前一项记录,”,、,“,转至下一项记录,”,、,“,转至最后一项记录,”,,即可完成其他,4,个按钮的创建。,选项卡和页,可以使用“选项卡”控件以多页的形式分类组织、展示窗体记录源中的数据,这对于处理可分为两类或多类信息的窗体是特别有用的。,【例4-6】创建“雇员“窗体,要求:用“选项卡”控件创建如图4-28和图4-29所示的,以“雇员”表为数据源“雇员“窗体。,图,4-28,“雇员”窗体公司信息选项卡,图,4-29,“雇员”窗体个人信息选项卡,操作步骤如下:,在“设计”视图中新建以”雇员”表为数据源的窗体。,在工具箱中,单击“选项卡控件”控件,然后单击要放置控件的窗体,将在窗体中添加有两页的选项卡控件。调整控件的位置和大小。,先单击需要添加控件的页选项卡,按图4-28和图4-29从字段列表中将各字段拖曳至对应页面上,调整各个控件的位置和大小。,双击“页1”选项卡,然后在“标题”属性中指定新名称“公司信息”。双击“页2”选项卡,然后在“标题”属性中指定新名称“个人信息”。,添加窗体页眉/页脚,在页眉上添加雇员名字文本框并设置其是否锁定属性值为“是”。在页脚上添加5个命令按钮。,请双击选项卡控件的边框打开它的属性表,然后设置相应的属性改变选项卡标题的字体名、字号、字体样式等等。,设置窗体的记录选定器属性值为“否”。,切换到“窗体”视图以测试控件,保存窗体为“雇员”。,图像、未绑定对象和绑定对象,可以使用位图文件(后缀为.,bmp,或.,dib),,图元文件(后缀为.,wmf,或.,emf,),或其他图形文件,如,GIF,和,JPEG,文件来显示背景图像或绑定对象框、未绑定对象框或图像控件中的图像,。,(,1,)向窗体添加背景图片,(,2,)使用图像控件来为窗体添加未绑定图片,(,3,)使用未绑定对象控件来为窗体添加未绑定图片,(,4,)使用绑定对象控件为窗体添加绑定图片,控件的基本操作,控件基本操作的具体方法见表44-1。,对控件进行对齐、大小、间距、相对位置设置的具体方法见表44-2,在窗体中完成计算,在窗体中,除了直接显示、编辑表记录中的数据,有时还要显示计算结果。窗体中的计算要在控件中完成,文本框是最常用来显示计算数值的控件类型,也可以使用任何有“控件来源”属性的控件。,1),在窗体中进行计算,首先要添加相应的控件,然后进行属性设置。,如果控件是文本框,则可以直接在控件中键入表达式。,对于任意控件,请确保选定了控件,单击工具栏上的“属性”按钮显示控件的属性表,在“控件来源”属性框中键入表达式或使用“表达式生成器”创建表达式。,在计算控件中,每个表达式前都要加上等号“=”运算符。,如果在“控件来源”属性框中需要更多空间来键入表达式,请按,SHIFT+F2,键来打开“显示比例”框。,如果是以查询为基础的窗体,可能要将表达式放入查询,而不是计算控件中。,2)关于在子窗体中计算总计值并在主窗体上显示该总计值。,可以使用具有子窗体的窗体来计算一组记录的总计值。主窗体及子窗体基于具有一对多关系的表。,如果要计算订单小计,可以在子窗体的页脚中添加文本框,并且在该文本框的“控件来源”属性框中指定表达式。表达式使用,Sum,函数。例如,下列的表达式将计算在“订单”窗体中所有产品的总量:,=,Sum(,数量*单价)。,如果要在主窗体上显示订单小计,可以在主窗体上创建文本框,使用表达式来引用子窗体上包含计算值的控件。可以在主窗体的文本框的“控件来源”属性框中指定表达式:=子窗体名称.,form!,子窗体计算文本框名称。,【例4-7】在例4-1所创建的“雇员与订单”窗体中添加计算文本框,要求:在“雇员与订单”窗体页脚处添加一个文本框,计算并显示“雇员与订单子窗体2”子窗体中的销售合计,添加销售合计后的窗运行体界面如图4-34所示。,图4-34 添加了销售总价的“雇员与订单”窗体,分析:,在主窗体显示销售合计的关键是在子窗体先添加计算合计的文本框,然后在主窗体设置一个文本框并将控件来源属性设置为对子窗体合计文本框的引用。,操作步骤:,(1)打开“雇员与订单子窗体2”子窗体,在窗体页脚添加一个“销售小计”文本框。,(2)设置“销售小计”文本框的控件来源属性为:“=,Sum(,销售价)”。,(3)打开“雇员与订单子”窗体,在窗体页脚添加一个“销售总计”文本框。,(4)设置“销售小计”文本框的控件来源属性为:“=雇员与订单子窗体,2.,Form!,销售小计”(注:公式中的销售小计是子窗体中“销售小计”文本框的名字)。,(5)保存窗体。,子窗体的概念,子窗体是窗体中的窗体。基本窗体称为主窗体,窗体中的窗体称为子窗体。在这类窗体中,主窗体和子窗体彼此链接,使得子窗体只显示与主窗体当前记录相关的记录(或称主窗体和子窗体同步)。,主窗体可以包含任意数量的子窗体,还可以嵌套子窗体,最多可以嵌套七级子窗体。,同时创建窗体与子窗体,可以利用“窗体向导”在创建窗体的同时创建子窗体,但是,在创建子窗体之前,要确保已正确设置了窗体数据源中的表的关系。,【例4-8】,创建图4-35所示的雇员与订单窗体。,要求:利用“窗体向导”以雇员、订单、订单明细3表为数据源,创建一个“雇员与订单”主/子窗体如图4-35所示,用于显示某个雇员所有的订单,以及某指定订单的具体内容,且不能修改所浏览的数据。,图4-35雇员与订单窗体,分析:,这个窗体全部在设计视图中创建过于麻烦,可先用窗体向导创建一个主/自窗体,然后在窗体设计视图中修改完成。,操作步骤:,1),创建窗体,(1)在“新建窗体”对话框中,选择“窗体向导”选项。,(2)在表/查询下拉列表框中选择雇员表,然后从可用字段中选择“雇员,ID”、“,名字”2个字段。,(3)在表/查询下拉列表框中选择订单表,然后从可用字段中选择“订单,ID”、“,订购日期”、“货主名称”、“货主地址”4个字段。,(4)在表/查询下拉列表框中选择订单表,然后从可用字段中选择“订单,ID”、“,产品,ID”、“,销售价”、“数量”、“折扣”5个字段。,(5)选择通过“通过雇员”的数据查看方式及“带有子窗体的窗体”选项。,(6)确定主窗体的标题为“雇员与订单”,子窗体1的标题为“雇员与订单自窗体1”,子窗体2的标题为“雇员与订单自窗体2”,用样式为“标准”后单击“完成”按钮完成窗体的创建。,2)修改窗体设计。,(1)设置主窗体及主窗体中,控件,的属性:选中主窗体中的的,雇员,ID、,名字、职务文本框及对应的标签6个控件的属性,将它们的宽度属性设置为“1.5,cm”,,是否锁定属性设置为“是”。按图4-35排列这6个控件。,双击主窗体选定器打开属性表,将窗体的“记录选定器”设为“否”。修改两个字窗体的提示标签为“订单”、“订单明细”。,(2)设置雇员与订单子窗体1子窗体的属性:双击雇员与订单子窗体1的窗体选定器打开属性表。取消导航条属性设为“否”、是否锁定属性设为“是”。调整子窗体的大小。,(3)设置雇员与订单子窗体2子窗体的属性:双击雇员与订单子窗体2的窗体选定器打开属性表。修改是否锁定属性设为“是”。,将窗体添加到已有的窗体中,【例4-9】将已有的子窗体添加到主窗体中。,要求:将创建完成的“雇员与订单”窗体中的“雇员与订单子窗体2”子窗体删除,再将“雇员与订单子窗体2”添加到“雇员与订单”窗体。,分析:为了保证子窗体存在,本例要求在主窗体中删除一个子窗体,然后再将其添加到主窗体中。要注意的是在主窗体中删除子窗体,并没有真正将其从数据库中删除,只是在主窗体中删除了一个子窗体对象。,操作步骤:,1)打开“雇员与订单”窗体的设计视图,选中“雇员与订单子窗体2”子窗体,,按,Delete,键将其删除,2)将“雇员与订单子窗体2”子窗体拖到“雇员与订单”窗体中并调整大小和位置完成操作。,如何链接主窗体与子窗体,主窗体和子窗体保持同步的关键是主窗体和子窗体彼此链接。用向导创建的子窗体,或者从“数据库”窗口中将窗体、表或查询拖动到另一个窗体的方式来创建子窗体,如果同时满足一定条件,,Access,将自动使主窗体和子窗体同步。,如果因为某种原因,,Access,没有自动链接主窗体与子窗体,可以自己链接窗体。,具体操作步骤如下:,(1)在“设计”视图中打开主窗体。确保已选定了子窗体控件,然后单击工具栏上的“属性”按钮,以显示窗体控件的属性表。,(2)在“链接子字段”和“链接主字段”属性框中,输入链接的字段或控件。要链接一个以上字段或控件,使用分号分隔字段或控件。如果输入了一个以上控件或字段的名称,必须在这两个属性中输入相同的名称次序。,(3)在“链接子字段”属性框中,输入子窗体中每个链接字段的名称。(在此属性中,不能使用控件名称。),(4)在“链接主字段”属性框中,输入主窗体中每个链接字段或控件的名称。,(5)如果不能确定每个属性所链接的字段或控件,请单击与属性框相邻的“生成器”按钮,以打开“子窗体/子报表字段链接器”。,(6)切换到“窗体”视图,以测试链接。,创建含事件的窗体,事件,事件是一种特定的操作,在某个对象上发生或对某个对象发生,事件的发生通常是用户操作的结果。,Access,可以响应多种类型的事件:鼠标单击、数据更改、窗体打开或关闭及许多其他类型的事件。,使用事件过程或宏,可以为在窗体、控件上发生的事件添加自定义的事件响应。,Access,够很容易地运行事件响应代码以响应用户执行的操作,。,创建事件过程,当将窗体、报表或控件的事件属性设置为 事件过程 时,,Access,将自动创建事件过程的模板。只需向窗体、报表或控件的特定事件中添加需要运行的代码即可。,创建事件过程的步骤为:,显示需创建对象的属性表。,单击想触发某一过程的事件的事件属性。,单击属性框旁的,“,生成器,”,,显示,“,选择生成器,”,对话框。,双击,“,代码生成器,”,,在窗体模块或报表模块中显示事件过程的,Sub,和,End Sub,语句。这些语句用于定义或声明事件过程。,Access,自动地为窗体或报表模块中的每一对象和事件声明事件过程,并使用,Private,关键字指出该过程只能被同一模块中的其他过程所访问。,向事件过程中添加事件发生时要运行的代码,。,【,例4-10】在窗体中添加事件,要求:在例4-8创建的“雇员与订单”窗体中,添加一个名位“输入代码”的文本框及提示标签,并为文本框添加一个更新后事件,要求在文本框内输入雇员代码后,自动在雇员表中找到该雇员的记录。,分析:输入代码后由程序自动在相应的表中找到对应记录是一种常用的技术,本题的关键是设置一个更新后事件并为之编写相应的事件处理代码。,事件过程的响应,当为对象设置了某一事件过程后,今后窗体运行时,只要在该对象上发生该事件时,,,Access,就会自动响应该事件,运行一次事件过程。,窗体中的常用事件,1),Windows,事件,2,),Data,事件,3),Focus,事件,4,),Keyboard,事件,5,),Mouse,事件,6),Error,和,Timing,事件,分析评价,用“自动窗体”创建窗体简单方便,但不能对数据字段进行舍取。,用窗体向导创建窗体,可对数据源,数据查看形式、等进行设定,可以创建出几乎所有类型的窗体。但是所创建的窗体不含有事件,很难满足窗体实际的使用要求。,使用设计视图创建窗体,可以设计出任何所需要的窗体形式,但是单纯使用设计视图创来建窗体,创建过于麻烦。,在实际的数据库应用系统开发过程中,将这几种方法交叉使用,可以得到最高的工作效率。,如果在窗体中需要进行一些特殊的操作在窗体中适当地添加事件或宏,是非常重要的。,在,Access,中尽管主窗体可以包含子窗体,也可以包含子窗体,而且能够根据需要包含7级子窗体。但是真要按照这个规则在一个窗体中去创建7级子窗体一般没有任何实际意义。实际意义的。级数一般不宜过多。,职业工作站,任务:在汽车销售系统中创建“订单”窗体如图4-38所示。,“订单”窗体是一个比较复杂的窗体(以“订单查询”查询为数据源),它包含一个“订单子窗体”窗体(以“扩展订单明细”查询为数据源)。,图,4-38,“,订单,”,窗体,要求窗体具有以下功能:,1)通过此窗体完成销售订单的输入,每张订单可以有多笔业务。,2)通过组合框输入购货者、销售人、提货方式、付费方式、产品,ID。,3)当加入一张新订单时,自动将当前日期填入订购日期、将当前日期+4填入发货日期日期、将当前日期+8填入到货日期。,4)在主窗体显示子窗体的购货合计金额。,5)输入或修改一条购货记录后,立即修改产品表中相应产品的的库存量,并立即在窗体中显示更新后的库存量。,6)当选择一个客户后,要自动将客户公司的公司名称、地址、城市、邮编传到实际收货公司的对应字段中去。,任务分析:,这是一个比较复杂的任务,开始任务之前,请仔细观察、使用一下罗斯文数据库中的订单子窗体,其功能和本任务十分相似。,功能要求分析:,要求1)分析,图4-38所示的“订单”窗体中涉及到多个表,但只含有一个主窗体和一个子窗体,如果直接使用表作为数据源,每使用一个表就需建立一个子窗体,不太合适。因此需要建立“订单查询”及“扩展订单明细”2个查询作为数据源。并用窗体向导快速创建一个带子窗体的主窗体。之后修改这个窗体最后完成任务。,要求2)分析,可通过创建组合框完成,如果在建表时采用了查阅向导的字段,建立窗体时会自动为该字段建立组合框,如果是普通字段,需自行为该字段建立组合框。,要求3)分析,可以通过在控件属性中设置默认值属性为,DATE(),天数完成。使用默认值后,每当新添加一条记录时,会自动将所设默认值填入字段。当浏览记录时,则默认值不起作用。因此,可将订购日期的默认值设置为订单输入时的系统日期,发货日期比订货日期晚4天,到货日期比订购日期晚8天。当这些日期与实际不符时,由用户自行修改。,要求4)分析,可用本书4.4中介绍的在子窗体中计算总计值并在主窗体上显示该总计值的方法实现实现。,要求5)分析,本功需要设置三个事件,在子窗体的“产品,ID”,组合框控件中设置一个“更新后”事件。使得在输入,或修改订单的过程中,当选择购买车名使“产品,ID”,改变以后,“更新后”事件得到响应来确定所选车辆的单价。,在数量文本框中设置一个“进入”事件,其作用是当选中数量文本框时,将文本框中的值记录下来。,在数量文本框中设置一个“更新后”事件,其作用是当文本框中的数量值发生变化时自动修改产品表中的“库存量”字段值。,要求6)分析,可以在主窗体的“客户,ID”,组合框控件中设置一个“更新后”事件,使窗体运行时,在输入或修改订单的过程中,当选择购货者使“客户,ID”,改变以后,“更新后”事件得到响应,从而实现功能要求。,任务实现:,1)创建查询,2)利用向导创建窗体,3)设定默认日期,4),添加计算控件,5)设置组合框,6)在设计视图中修改窗体,7)设置“产品,ID”,组合框控件的“更新后”事件过程,8)设置“数量”文本框控件的“进入”事件过程,9)设置“数量”文本框控件的“更新后”事件过程,10)设置“客户,ID”,组合框控件的“更新后”事件过程,本章小结,窗体是,Access,数据库对象之一,是数据库与,Access,应用程序的接口。利用窗体,用户可以方便地录入、修改、查询数据库记录。窗体的数据源可以是表或查询,也可以没有数据源。,窗体有6种类型:纵拦式窗体、表格式窗体、数据表窗体、主/子窗体、数据透视表窗体、图表窗体6种类型。,窗体有5种视图:设计视图、窗体视图、数据表视图。,窗体的创建有多种方法,利用“自动创建窗体”向导可以创建三种窗体:纵栏式窗体、表格式窗体和数据表式窗体。,使用窗体向导创建窗体,使用窗体设计视图创建窗体,窗体中的所有信息都包含在控件中。控件是窗体用于显示数据、执行操作或装饰窗体的对象。,窗体设计其实质是对各控件对象的设计,控件对象的设计主要通过属性设置来完成。,属性主要分格式、数据、事件、其他四类。,事件是一种特定的操作,在某个对象上发生或对某个对象发生。事件的发生通常是用户操作的结果。,使用事件过程或宏,可以为在窗体、报表或控件上发生的事件添加自定义的事件响应。,Access,够很容易地运行事件响应代码以响应用户执行的操作。,主要概念和观念,主要概念,窗体(,p.2 ),窗体的类型,(,p.4 ),窗体的视图(,p.3 ),窗体的组成,(,p.3 ),窗体控件(,p.4 ),属性(,p.10 ),事件(,p.26 ),主要观念,创建窗体 窗体控件的使用 控件的属性设置 在窗体中设计事件,简答题,1)简述窗体的主要作用。,2)简述控件的作用。,3)简述绑定型和未绑定型控件的区别。,4)简述控件属性对控件的影响。,5)什么是事件?,技术应用,1)要为图书馆管理系统创建一个“书籍归还”窗体,在该窗体中,可以首先查找借书的读者,当读者找到之后,将使用另外一个窗体显示该读者所有已经借阅的书籍,并且在该窗体中可以输入书籍的归还时间,这样就大大方便了操作。为此应创建什么类型的窗体?,2)主窗体中如何引用子窗体中的控件?,3)如何为一个窗体更换数据源?,4)控件中的“标题”和“名字”属性有何区别?,5)利用窗体向导创建带有子窗体的窗体,设置窗体的数据源时,选定表或查询的先后对结果是否有影响?,单项操作训练,1)创建汽车销售系统的客户窗体4-44所示。,图4-44汽车销售系统的客户窗体,2)以产品表为数据源,利用窗体向导创建一个产品窗体,如图4-45所示。,图4-45 产品窗体,综合操作训练,创建汽车销售系统的“客户订单”窗体,,,如图4-46所示。,该窗体由一个主窗体(“客户订单”)和两个子窗体(“客户订单子窗体1”、“客户订单子窗体2”)组成。“客户订单”窗体以“客户”表为数据源,“客户订单子窗体1”窗体以“订单”表为数据源,“客户订单子窗体2”窗体以“扩展订单明细”查询为数据源。,要求:在主窗体中输入一个客户代码后,在“客户订单子窗体1”中显示该客户的所有订单,同时在“客户订单子窗体2”中显示“客户订单子窗体1”中所选中的某订单的所有明细记录,输入一个客户代码后,能够使“客户”表定位到所选的客户记录之上。,图4-46“客户订单”窗体,创建一个“自定义”窗体如图4-47所示。该窗体具有运行窗体、运行查询、运行报表、浏览数据访问页、执行应用程序等功能。练习中所用到的对象可自行确定。,图4-47,“,自定义,”,窗体,创建汽车销售系统的“零售订单”窗体如图4-48所示。,“,零售订单,”,窗体(以,“,零售订单查询,”,查询为数据源),它包含一个,“,零售订单子窗体,”,窗体(以,“,扩展订单明细,”,查询为数据源)。为了区分零售和批发的客户,规定零售客户的,“,客户,ID,”,为,“,AAAAA,”,,,“,公司名称,”,为,“,零售客户,”,。,图4-48,要求窗体具有以下功能:,(,1,)完成零售订单的输入,每张订单可以有多笔业务。,(,2,)通过组合框输入销售人、付款方式、产品,ID,。,(,3,)当加入一张新订单时,自动将当前日期填入订购日期。如果日期与实际不符再由用户修改。,(,4,)在主窗体显示子窗体的购货合计金额。,(,5,)要求进入本窗体的数据只能是零售数据,并且在订单输入过程中,“,雇员,ID,”,选择后不需要每张订单都重新选择。,(,6,)输入或修改一条购货记录后,立即修改产品表中相应产品的的库存量,并立即在窗体中显示更新后的库存量。,(,7,)设置一个,“,开票,”,和,“,输入新单,”,按钮。单击,“,开票,”,按钮自动填入,“,到货日期,”,、,“,发货日期,”,、,“,付款,”,三个字段的值,,(,8,)设置一个,“,输入新单,”,按钮。单击,“,输入新单,”,按钮,自动填入,“,客户,ID,”,、,“,雇员,ID,”,。,(,9,),设置,“,预览发票,”,和,“,打印发票,”,两个按钮。,案例1:窗体在数据库实际应用中的作用,某企业由于业务的扩大,业务数据不断增加,为此利用,Accsee,建立了企业数据库,在数据库中设置了若干数据表,但没有建立数据库应用系统。但是该企业的某项业务需要需要使用到6个数据表中的数据,数据操作、维护很不方便。为此他们通过设置一些查询,将多个表的数据集中在两个查询中,通过查询来对多个表中的数据进行操作维护,但效果还是不好。最后该企业利用表和查询作为数据源设计了一个窗体,将6个表的相关内容集中在一个窗体中进行操作和维护,取得了很好的数据库使用效果。,思考:该企业在,Access,数据库中使用窗体后为什么会取得较好的数据库使用效果?,案例2:,小王放弃了使用,Access,数据库,小王是一个小型企业的统计员,由于企业规模较小,企业没有使用业务管理系统对统计数据进行处理。面对越来越多的统计数据,小王只能使用,Excel,进行数据处理工作。一次偶然的机会,小王知道了,Access,数据库可以有效地进行各种数据处理的工作,于是将在,Excel,中进行处理的数据导入,Access,数据库,开始在,Access,数据库中处理他的业务数据。由于小王对,Access,数据库了解不多,只是简单地使用表和查询进行工作,因此感到使用数据库很烦琐,不能提高工作效率。之后他试着设计窗体,试图将这些表集中在一个界面中进行处理,但无法实现,过了一段时间,小王作出了放弃使用,Access,数据库的决定,仍然使用,Excel,进行数据处理工作。,思考:小王使用,Access,数据库为什么会失败?,实训题,1,)实训项目:创建汽车销售系统的窗体,2,)实训地点:校内
展开阅读全文