[理学]VB第七章课件_第1页
[理学]VB第七章课件_第2页
[理学]VB第七章课件_第3页
[理学]VB第七章课件_第4页
[理学]VB第七章课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章 数据库编程教学目标了解关系数据库的基本知识了解数据库的结构化查询语言SQL。了解数据库访问技术和数据访问对象。熟练掌握使用数据控件和绑定控件创建数据窗体的方法和步骤。掌握使用数据环境设计器创建数据访问对象,并在此基础上进行数据窗体和数据报表的设计。掌握使用数据窗体向导创建数据窗体,并通过阅读所生成的代码了解如何用编写代码的方法创建和运用数据对象。7.关系数据库数据库就是按照一定的数据模型来组织和存放的相关数据的集合 。关系数据库是以关系模型为基础的数据库,主要特点是使用二维表的方式组织数据,通过若干个表(Tabel)存储数据,并利用关系(Relation)将这些表联系在一起。 常见的有

2、FoxPro、Access、Sybase、Oracle和SQL Server 等。关系数据库的基本概念 1表在关系数据库中,数据以二维表(行和列)的形式存储。一般情况下,可将描述不同事物的数据分别保存在数据库中不同的表中,例如与部门相关的信息保存在部门表中、员工的基本信息保存在员工表中。例如下所示的员工表。 工号姓名部门ID性别出生日期电话01006陈镭1男1985-10-98837000601007罗薇1女1987-4-298837000701008王亮2男1986-6-188837000801012金君君2男1987-5-关系数据库的基本概念2记录 表中的每一行表示一条记录,一条记录描述事

3、物的一个实例。例如员工表中的每一行描述一个员工的基本信息。3字段 表中的每一列称为一个字段,每一个字段描述事物的一个属性。例如,上述员工表中有6列即6个字段,分别描述员工的工号、姓名等6个不同属性。创建一个数据库表时,要设置每个字段的数据类型(如文本、数值、日期等)和最大长度等属性。关系数据库的基本概念4主键 主键惟一标识了表的每一行。主键可以是一个字段,也可以是多个字段的组合。5外键 外键也是由一个字段或多个字段组成,而这些字段又是其它表的主键。通过外键可以与主键所在表建立关联。 6关系 关系是建立在两个表的公共字段(一般是主键和外键)之间的一种关联。关系类型可以是一对一、一对多或多对多。

4、7.2 结构化查询语言SQL结构化查询语言SQL(Structure Query Language)是关系数据库操作的标准语言。SQL语言用简洁高效的语法实现对关系数据库的各种操作,分为数据定义语言(DDL)命令和数据操作语言(DML)命令。DDL命令创建和定义新的数据库、字段和索引;而DML命令完成从数据库中进行选择、插入、更新和删除等操作。 最常用的数据操作命令。1选择查询 从一个或多个表中检索出所需的数据。SELECT 字段列表 FROM 表名 WHERE 条件 GROUP BY 分组字段 ORDER BY 字段字段列表可以是一个字段或用逗号分隔的多个字段,也可以是由表达式表示的计算字段

5、,如果要选择表中的所有字段,可用“*”代替。FROM子句用于指定查询的数据来源(一个或多个表)。WHERE子句用于构造查询条件。此条件表达式是由关系运算符或逻辑运算符构成的逻辑表达式。1选择查询例如,要从“员工”表中查询出所有姓“张”的员工姓名、性别和年龄,SQL语句为:SELECT姓名, 性别, YEAR(NOW() - YEAR(出生日期) AS 年龄FROM 员工 WHERE 姓名 Like “张%”GROUP BY子句用于对结果进行分组。分组中经常使用合计函数(又称聚集函数)对数据进行统计运算,它返回应用于一组记录的统计结果值。 常用的合计函数 函数描述AVG返回指定字段的平均值COU

6、NT返回选定记录的个数SUM返回指定字段中所有值的总和MAX返回指定字段中的最大值MIN返回指定字段中的最小值例如,统计男女员工的人数、最大年龄、平均年龄。SELECT 性别, COUNT(*) AS 人数, MAX(YEAR(NOW() - YEAR(出生日期) AS 最大年龄, AVG(YEAR(NOW() - YEAR(出生日期) AS 平均年龄 FROM 员工 GROUP BY 性别2插入记录(INSERT INTO 语句)可添加一条或多条记录到数据表中。 INSERT INTO 表名(字段列表) VALUES(值列表)例如,在“员工”表中增加一条新记录:INSERT INTO 员工(

7、工号,姓名,性别, 出生日期)VALUES (03704,赵守一, 男 ,#1988-6-1#)2插入记录(INSERT INTO 语句)将查询结果插入到另一表中的语句格式如下:INSERT INTO 目标表名(字段列表) SELECT FROM 例如,将“员工”表中1945年以前出生的员工记录添加到“退休员工”表中:INSERT INTO 退休员工(姓名,性别,出生日期)SELECT 姓名,性别,出生日期 FROM 员工 WHERE 出生日期 # 1945 - 01 - 01 #3更新记录UPDATE 表名 SET 字段1 = 表达式1,字段2 = 表达式2, WHERE 例如,将所有员工的

8、电话号码前加上一位“8”:UPDATE 员工 SET 电话 = 8 & 电话4删除记录删除记录的语句格式如下:DELETE FROM WHERE 例如,删除“员工”表中1945年以前出生的员工记录。DELETE FROM 员工 WHERE 出生年月 0, 部门ID= & DataCombo1.BoundText)tj = IIf(DataCombo2.Text = , tj, tj & and 职务ID= & DataCombo2.BoundText)tj = IIf(Text1 = , tj, tj & and 姓名 like % & Text1 & %)DataEnvironment1.r

9、scmdStaff.Filter = tj 利用记录集的Filter属性进行条件筛选DataGrid1.RefreshEnd Sub 7.6.2 利用数据环境设计器设计数据报表数据报表设计器属于ActiveX Designer组中的一个成员,在使用前需选择“工程”“添加Data Report”命令,将报表设计器加入到当前工程中,产生一个DataReport对象,双击DataReport对象后可进行报表设计。 报表标头区包含整个报表最开头的信息,报表注脚区包含整个报表尾部的信息,一个报表只有一个报表头和一个报表注脚区,一般在报表标头区使用“标签”控件建立报表标题,在报表注脚区用报表函数控件显示数

10、据的统计结果。7.6.2 利用数据环境设计器设计数据报表 页标头区设置报表每一页顶部的标题信息。 页注脚区包含每一页底部的信息。 细节区包含报表的具体数据,其高度将决定报表数据的行高。当报表运行时,细节区部分随每条记录重复输出显示。 例7-4 利用数据报表设计器设计“员工信息报表”。 在工程中添加报表。 通过“工程”菜单中的“添加Data Report”将数据报表DataReport1加入到工程中。将报表绑定到数据对象。 在工程资源管理器中双击DataReport1,在属性窗口的下拉列表中选中报表DataReport1,将DataSource属性设为数据环境DataEnvironment1,D

11、ataMember属性设为命令对象cmdStaff。例7-4 利用数据报表设计器设计“员工信息报表”。 在报表中添加绑定控件。 从数据环境设计器窗口将命令对象中所需的字段拖放到报表细节区域,然后将其中的字段标题拖到页标头节,调整位置和设置格式。 在报表中添加其他控件。 单击工具箱中的“数据报表”按钮,打开报表控件工具,根据需要在报表的细节区域添加直线,在标头节添加标题(标签控件),在报表的注脚节添加合计函数(函数控件)并通过FunctionType属性的常数或值确定函数功能。函数控件的FunctionType常数与功能 FunctionType常数值功能rptFuncSum0(缺省的)合计数据

12、字段的值rptFuncAve1计算数据字段的平均值rptFuncMin2返回数据字段的最小值rptFuncMax3返回数据字段的最大值rptFuncRCnt4计数部分中的行数rptFuncVCnt5计数包含非空值的字段rptFuncSDEV6计算标准偏差rptFuncSERR7计算标准错误例7-4 利用数据报表设计器设计“员工信息报表”。对报表页脚中的统计函数控件设置如下表所示。 属性结果DataSourceDataMemberDataFieldFunctionType人数统计DataEnvironment1cmdStaff工号rptFuncRCnt平均年龄DataEnvironment1cm

13、dStaff年龄rptFuncAve 将报表设为启动对象,运行程序以预览报表。此外,也可以在例7-3的员工查询窗体中添加“报表”按钮,再添加一行单击事件代码:DataReport1.Show后,即可在查询后单击该按钮预览报表。7.7 编写程序代码访问数据库 完全用编写代码的方法使用ADO实现数据访问,虽然代码编写量比上述方法大,但最为灵活。与在VB中用代码创建其他对象一样,需要进行以下操作: 在工程中引用对象的类型库(例:选择“工程”菜单中的“引用”后选中Microsoft ActiveX Data Object 2.x Library)。 声明和初始化对象。 设置对象属性。 打开对象。 利用

14、对象的属性、方法和事件进行操作。 关闭和释放对象。例7-5通过VB数据窗体向导创建数据访问窗体。见P7.8 数据访问综合实例例7-6 在工程中创建员工考评窗体,如图7-16所示。要求:利用组合框选择部门后,左侧列表框显示该部门员工名单,单击其中的任一姓名后,表格中显示出该员工历年的考评记录,并可以修改。同时,使“打印年度报表”按钮不可用。例7-6选择年度后,表格中显示出所有员工该年度的考评记录,如图7-17所示;若年度清空,表格中显示出所有员工各年度的考评记录。单击“打印年度报表”按钮,打印预览出所显示的考评记录的报表。例7-6 在本例中,由于要访问的数据较多,因此采用数据环境设计器和编写代码

15、相结合的方法。 对运行过程中保持不变的数据,如组合框下拉列表中的“部门”信息和“年度”信息,采用在数据环境设计器中分别创建命令对象cmdDep 和CmdYear,在设计时设置组合框数据属性与其绑定。 对需要根据用户操作而变化的数据,如列表框中的名单要根据用户所选的部门确定,采用编写代码的方法动态创建记录集对象。例7-6 而对表格中显示的考评记录,由于选择姓名和选择年度后要显示的数据内容不同,因此可采用编写代码的方法,根据用户的操作,将DataGrid1与不同的命令对象进行绑定,即所谓的动态绑定。这些在数据环境设计器中创建的命令对象,运行时也要通过程序代码按选定的条件进行筛选。添加“数据环境设计

16、器”、创建到Staff.mdb的连接Connnction1、添加命令cmdDep(数据源为Staff.mdb中的“部门”表) 在数据环境中添加和设置命令。添加命令cmdKP,数据源为SQL命令文本,直接输入或通过“SQL生成器”生成命令:SELECT 工号, 年度, 出勤率, 任务完成率, 工作表现得分, 综合评价得分 FROM 年度考评 ORDER BY 年度锁定类型设为“开放式”,以便允许录入和编辑考评成绩。添加命令cmdKPRPT,数据源为SQL命令文本,通过“SQL生成器”生成包含3张表的查询命令:SELECT 部门.部门名称, 员工.工号, 员工.姓名, 年度考评.年度, 年度考评.

17、出勤率, 年度考评.任务完成率, 年度考评.工作表现得分, 年度考评.综合评价得分 FROM 员工, 年度考评, 部门 WHERE 员工.工号 = 年度考评.工号 AND 员工.部门ID = 部门.部门ID ORDER BY 员工.工号锁定类型设为“只读”,只供浏览打印。 在数据环境中添加和设置命令。添加命令cmdYEAR,数据源为SQL命令文本,直接输入或通过“SQL生成器”生成命令:SELECT DISTINCT 年度 FROM 年度考评其中,关键字DISTINCT 用来过滤掉结果中的重复行。 添加窗体。添加窗体,命名为frmKP,放置ActiveX控件DataCombo1(选择部门)、D

18、ataCombo2(选择年度)、DataList1(选择员工)、DataGrid1(显示或编辑结果)。 设置绑定控件的有关数据属性。设置DataCombo1 的有关数据属性,实现用部门表的数据填充DataCombo1的列表属性属性值RowSourceDataEnvironment1RowMembercmdDepListField部门名称BoundColumn部门IDText删空 设置绑定控件的有关数据属性。设置DataCombo2 的有关数据属性,实现用年度考核表中的年度数据填充DataCombo2的列表 属性属性值RowSourceDataEnvironment1RowMembercmdYE

19、ARListField年度BoundColumn年度Text删空 设置绑定控件的有关数据属性。 设置 DataGrid1的属性。在DataGrid1属性页的“通用”中设置“允许添加”、“允许删除”、“允许更新”,有关绑定属性放在代码中动态绑定。 创建报表。 选择“工程”菜单中的“添加Data Report”命令,在工程中添加报表DataReport2。 打开DataReport2,通过属性窗口将报表的DataSource属性设为DataEnvironment1,DataMember属性设为cmdKPRPT; 从数据环境设计器将cmdKPRPT拖放到其中,将每个字段的标签控件移到页标头,文本控件

20、放到细节区域,调整各控件的位置和节的高度。 创建报表。 通过属性窗口将报表标头命名为Head,其中放置Label控件,命名为title。 在报表注脚节放置函数控件,分别绑定到各考评数字字段,报表页脚中的函数控件设置如下表所示。属性控件DataSourceDataMemberDataFieldFunctionType总人数DataEnvironment1cmdKPRPT工号rptFuncRCnt平均出勤率DataEnvironment1cmdKPRPT出勤率rptFuncAve平均综合考评DataEnvironment1cmdKPRPT综合考评分数rptFuncA 编写控件的事件代码。 “部门选

21、择”组合框的事件代码。 当组合框选项发生变化时,对列表框的数据属性重新赋值,使得按所选部门的名单重新填充列表DataList1的列表项。Private Sub DataCombo1_Change()Dim rsName As ADODB.Recordset 声明ADO记录集对象rsName Set rsName = New ADODB.Recordset 创建ADO记录集对象rsNamersName.Open select 工号,姓名 from 员工 where 部门ID= _ & DataCombo1.BoundText & , DataEnvironment1.Connection1 打开

22、记录集对象rsName,数据源为SQL命令文本,连接为数据环境中的Connection1Set DataList1.RowSource = rsName 设置列表项来源为记录集对象rsNameDataList1.ListField = “姓名” 设置列表项取自“姓名”字段DataList1.BoundColumn = 工号 设置列表返回“工号”字段End S 编写控件的事件代码。“员工选择”列表框的事件代码。 单击其中的姓名时,将返回的工号作为记录集rscmdKP的筛选条件,使绑定的表格DataGrid1显示筛选出的员工考评记录。Private Sub DataList1_Click()DataCombo2.Text = 年度组合框清空cmdPRT.Enabled = False 使打印报表按钮不可用DataEnvi

温馨提示

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

最新文档

评论

0/150

提交评论