版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章数据库应用7.17.27.37.47.57.67.7数据库基本知识使用可视化数据管理器创建数据库Data控件的使用ADO数据对象访问技术可视化数据库工具设计报表多媒体数据库7.1数据库基本知识1.数据库(DataBase)数据库是数据的集合,就象存储数据的仓库,关系型数据库中的数据以二维的关系表组织数据。数据库保存为数据库文件,数据库文件是独立于应用程序的,并可以为多个应用程序使用。VB中可以访问多种类型数据库,包括Access、Dbase、Paradox、FoxPro等小型数据库以及SQLServer、Oracle、Sybase等大型数据库,这些数据库可以用专门的数据库软件如Access、FoxPro等来创建和管理,也可以在VB中创建;并且这些数据库还可以被VB以及其它软件如VC、Word等使用。7.1数据库基本知识2.数据表(Table)数据表是按行和列排列的关系表,每一行为一个记录,每一列为一个字段,所有的记录组成二维的表格。如图7.1所示为学生数据库中的三个表格,分别是学生信息表(Student)、学生成绩表(Score)和系别表(Department)。
(a)学生信息表(Student)(b)学生成绩表(Score)(c)系别表(Department)图7-1数据表7.1数据库基本知识3.字段(Field)在二维数据表中每一列为一个字段,数据表头的每一列为字段的名称。每个字段都分配数据类型、最大长度及其它属性。例如,图7.1(a)的Student表(学生信息)中有学号、姓名、系别代码、家庭住址、性别和出生日期字段。其中学号是字符型,长度为10;性别是布尔型;出生日期是日期型。4.记录(Record)在二维数据表中每一行数据为一个记录,每个记录由多个字段组成,任意两个记录都不可能完全相同。例如,图7.1(a)的Student表(学生信息)中每行表示一个学生的记录。7.1数据库基本知识5.索引(Index)和关键字索引是比表搜索更快的排序列表,每个索引输入项指向其相关的数据库行,如果查询在寻找记录时能浏览索引,就可以执行得更快。关键字是表的字段,为了快速检索而被索引,关键字可以是唯一或非唯一。例如,在图7.1(a)的Student(学生信息表)中,学号是表的关键字,可以唯一标识学生的,可以使用学号字段来添加索引。6.关系数据库是由多个表组成,表与表之间用不同的方式关联就是关系表。例如,学生管理数据库StudentAd中有三个表,Student表(学生信息)与Score表(学生成绩)之间由“学号”字段关联,Student表(学生信息)与系别表(Department)之间由“系别代码”字段关联。7.1数据库基本知识学生管理数据库StudentAd的组成如图7.2所示。图7.2数据库与表7.2使用可视化数据管理器创建数据库7.2.1创建数据库1.启动数据管理器选择“外接程序”菜单“可视化数据管理器”菜单项,就可以启动数据管理器,出现VisData窗口如图7.3所示。2.创建数据库选择VisData窗口的“文件”菜单“新建”菜单项“MicrosoftAccess…”菜单项“Version7.0MDB”菜单项,在出现的文件对话框中输入数据库名“StudentAd.mdb”,则在数据管理器中出现如图7.3中“数据库窗口”和“SQL语句”两个子窗口。新建的数据库不含任何数据表。图7.3数据管理器7.2.1创建数据库3.建立数据表将鼠标指针移到“数据库窗口”区域内,单击鼠标右键出现快捷菜单,如上图所示选择“新建表”菜单项,则出现“表结构”窗口,包括Access类型的数据表各个字段的名称、类型、宽度等。如图7.4所示在“表结构”窗口中创建Student表(学生信息),添加六个字段。图7.4设计表结构7.2.1创建数据库单击表结构中的“添加字段”按钮,出现“添加字段”对话框,如图7.5所示。
图7.5“添加字段”对话框7.2.1创建数据库根据上述方法,创建三个数据表:Student表、Score表和Department表,各表的字段设置如表7.1所示。表名字段名数据类型长度Student(学生信息)学号Text10姓名Text16系别代码Text4性别Boolean家庭住址Text50出生日期Date/TimeScore(学生成绩)学号Text10姓名Text16语文Single数学Single英语SingleDepartment(系别)系别代码Text4系别Text10表7.1数据表字段7.2.1创建数据库4.添加索引为了提高搜索数据库记录的速度,需要将数据表中的某些字段设置为索引(Index)。在上图7.4中单击“添加索引”按钮,会出现“添加索引”对话框如图7.6所示。
图7.6添加索引7.2.1创建数据库5.输入记录数据表设计好后,在VisData右侧的“数据库窗口”中以树状结构显示了数据库的多个表,用鼠标右键单击某个表名,在下拉菜单中选择“打开”菜单项就可输入记录。例如,在“数据库窗口”用鼠标右键单击Student表,选择“打开”菜单项显示数据表。如果单击工具栏的
按钮则以单个记录方式显示(如图7.7(a)),单击工具栏的
按钮则以网格控件方式显示(如图7.7(b))。单个记录显示Score表(b)多记录显示Score表图7-7显示Score表7.2.1创建数据库6.建立查询数据库中的表有很多记录,有时需要查找符合某些条件的记录,这些记录又组成一张新表,这张新表就是查询(Query)。例如,在学生成绩表“Score”中要查找语文成绩大于80的记录,在VisData窗口建立查询的步骤如下:用鼠标右键单击“数据库窗口”,或用鼠标右键单击“Score”表,在下拉菜单中选择“新建查询”菜单项,则出现“查询生成器”窗口,如图7.8所示。
图7.8创建查询7.2.1创建数据库②在“查询生成器”窗口单击“表:”框中的表名“Score”。③在“要显示的字段:”中选择在查询表中需要显示的字段,选择“Score.学号”、“Score.姓名”和“Score.语文”;单击选择“升序”。④单击“字段名称”的下拉箭头选择“Score.语文”,在“运算符”下拉列表中选择“>”,在“值”文本框中输入“80”。⑤单击“将And加入条件”或“将Or加入条件”按钮,在“条件:”文本框中显示查询的SQL语句。如果还有其他条件则继续输入条件。7.2.1创建数据库⑥单击“显示”按钮则出现“SQL查询”消息框,将查询条件用SQL语言显示。单击“运行”按钮,出现“这是SQL传递查询吗?”消息框,单击“否”按钮,则可生成查询。如图7.9所示。图7.9生成查询7.2.1创建数据库⑦单击“保存”按钮将查询保存,输入查询名为“ScoreYW”。在VisData窗口的显示如图7.10所示。在左侧“数据库窗口”显示StudentAd数据库中有三个表和一个查询,查询ScoreYW的SQL语句显示在右侧的“SQL语句”窗口中。中。
图7.10VisData窗口显示7.2.2结构化查询语言SQL1.SQL运算符SQL运算符可以使用AND、OR、NOT逻辑运算符,<、<=、>、>=、<>比较运算符,还可以使用BETWEEN指定运算值范围,LIKE指定格式匹配,IN指定记录。2.SQL函数SQL语言中可以使用下列函数:AVG:求平均值。COUNT:计数。SUM:求和。MAX:求最大数。MIN:求最小数。7.2.2结构化查询语言SQL3.SQL语句(1)Create语句创建一个新数据表语法: CREATETABLE数据表([字段名称1]数据类型(长度),[字段名称2]数据类型(长度),…)例如,建立Department数据表: CREATETABLEDepartment([系别]Text(10),[系别代码]Text(4))(2)SELECT语句从数据库中筛选一个记录集语法: SELECT字段列表FROM子句WHERE子句GROUPBY子句HAVING子句ORDERBY子句7.2.2结构化查询语言SQL(3)INSERT语句在数据表中添加记录语法: INSERTINTO数据表(字段名1,字段名2,…)VALUES(数据1,数据2,…)例如,向Department表中添加一记录: INSERTINTODepartment(系别代码,系别)VALUES('0006','电气学院')(4)DELETE语句删除符合条件的记录语法: DELETE(字段名)FROM数据表WHERE子句一般删除整条记录,因此字段名省略不写。例如,将Student表中“学号”为“2003010103”的记录删除: DELETEFORMStudentWHERE学号='2003010103'(5)UPDATE语句更改符合条件的记录语法: UPDATE数据表SET新数据值WHERE子句例如,将Score表中所有“语文”小于80的都改为80: UPDATEScoreSET语文=80WHERE语文<807.2.2结构化查询语言SQL4.用SQL语句建立查询在VisData窗口右侧的“SQL语句”窗口中直接输入SQL语句,在上图7.10中单击“执行”按钮就可以生成查询,单击“清除”按钮清除SQL语句,单击“保存”并输入查询名就可以保存查询。7.3Data控件的使用在控件箱中的Data控件是VB用于数据库操作的控件,使用Data控件只需要编写很少量的代码就可以访问多种数据库中的数据。将Data控件放置在在窗体上就可以看到Data控件的外观,如图7.11所示。
图7.11Data控件7.3.1Data控件的常用属性和数据感知控件1.Data控件的常用属性(1)Connect属性Connect属性用来指定该数据控件所要访问的数据库格式,默认值为Access,还包括dBASE、FoxPro、Excel等,如图7.12是Connect属性列表框。在运行时设置Connect属性,可以使用代码: Data1.Connect="Access"图7.12Data控件属性7.3.1Data控件的常用属性和数据感知控件(2)DatabaseName属性
DatabaseName属性是用于确定数据控件使用的数据库,包括其完整的路径。如果要访问的是Access数据库,就可以单击
按钮将其设置为.mdb文件。在运行时设置DatabaseName属性,可以使用代码: Data1.DatabaseName="C:\StudentAd.mdb"(3)RecordSource属性RecordSource属性用于指定数据控件所访问的记录来源,可以是数据表名,也可以是查询名。在属性窗口中单击下拉箭头在列表中选出数据库中的记录来源。例如,当DatabaseName属性选择了StudentAd.mdb数据库,单击RecordSource属性下拉列表就自动显示了三个表名和查询名,可以选择其中一个。7.3.1Data控件的常用属性和数据感知控件(4)RecordsetType属性RecordsetType属性用于指定数据控件存放记录的类型,包含表类型记录集、动态集类型记录集和快照类型记录集,默认为动态集类型。表类型记录集(Table):包含实际表中所有记录,这种类型可对记录进行添加、删除、修改、查询等操作,直接更新数据。动态集类型记录集(Dynaset):可以包含来自于一个或多个表中记录的集合即能从多个表中组合数据,也可只包含所选择的字段。这种类型可以加快运行的速度,但不能自动更新数据。快照类型记录集(Snapshot):与动态集类型记录集相似,但这种类型的记录集只能读不能更改数据。7.3.1Data控件的常用属性和数据感知控件2.数据感知控件控件箱中的常用控件有Label、TextBox、CheckBox、Image、OLE、PictureBox、ListBox和ComboBox等都能和Data控件绑定。(1)数据感知控件的属性设置
数据感知控件要与Data控件绑定必须要设置两个属性:DataSource和DataField。DataSource属性:用于在下拉列表中选择想要绑定的Data控件名称,通过Data控件与数据库文件联系起来。如图7.13所示数据感知控件Text1的属性,当窗体上放置了一个Data控件为Data1,在DataSource属性的下拉列表中选择Data1。DataField属性:用于在下拉列表中选择要显示的字段名称。图7.13数据感知控件属性7.3.1Data控件的常用属性和数据感知控件(2)绑定数据控件的步骤数据感知控件绑定的过程不需要加入任何程序代码,就可以通过数据感知控件显示数据库内容,与Data控件绑定的步骤如下:将Data控件(Data1)放置在窗体中,将数据感知控件Text1放置在窗体中。设置Data1的DatabaseName属性为“C:\StudentAd.mdb”文件,设置Data1的RecordSource属性为“Score”表。设置Text1的DataSource属性为Data1,设置Text1的DataField属性为“姓名”字段。这样姓名字段就可以在文本框中显示了。7.3.1Data控件的常用属性和数据感知控件【例7-1】创建一个学生成绩输入界面,使用文本框输入学生成绩表Score的各字段:姓名、语文、数学和英语。界面设计:四个文本框Text1~Text4分别用来显示表Score的姓名、语文、数学和英语字段,四个标签显示信息,一个Data控件Data1与数据库StudentAd.mdb绑定。运行界面如图7.14所示。
图7.14运行界面7.3.1Data控件的常用属性和数据感知控件属性设置如表7.2所示。表7.2属性设置表对象名属性名属性值对象名属性名属性值Form1Caption输入学生成绩Text2Text空Data1Caption学生成绩DataSourceData1DatabaseNameC:\StudentAd.mdbDataField语文RecordSourceScoreText3Text空Label1Caption姓名DataSourceData1Label2Caption语文DataField数学Label3Caption数学Text4Text空Text1Text空DataSourceData1DataSourceData1DataField英语DataField姓名Label4Caption英语7.3.2Data控件的记录集1.Data控件记录集的常用方法(1)AddNew方法AddNew方法用于添加一个新记录,新记录的每个字段如果有默认值将以默认值表示,如果没有则为空白。例如,给Data1控件对应的记录集添加新记录: Data1.Recordset.AddNew(2)Delete方法Delete方法用于删除当前记录的内容,在删除后当前记录移到下一个记录。(3)Edit方法Edit方法用于对可更新的当前记录进行编辑修改。
7.3.2Data控件的记录集(4)Find方法群组Find方法群组是用于查找记录,其中FindFirst是从第一个记录向后查找,FindLast是从最后一个记录向前查找,FindNext是从当前记录向后查找,FindPrevious是从当前记录向前查找。例如,在Score表中查找学号为“2003010104”的记录:Data1.Recordset.FindFirst"学号='2003010104'"IfData1.Recordset.NoMatchThen '如果没找到 MsgBox"找不到学号为2003010104的学生"EndIf当使用Find或Seek方法找不到相符的记录时,NoMatch属性为True。7.3.2Data控件的记录集(5)Move方法群组Move方法群组用于移动记录,包含MoveFirst、MoveLast、MoveNext和MovePrevious方法,这四种方法分别是移到第一个记录、移到最后一个记录、移到下一个记录和移到前一个记录。当在最后一个记录时,如果使用了MoveNext方法时就移到记录的边界,EOF的值会变为True,如果再使用MoveNext方法就移出记录集范围会出错,出现如图7.15的出错提示。对于MovePrevious方法如果前移也是同样的结果。图7.15出错提示7.3.2Data控件的记录集因此使用MoveNext方法时应该在移到EOF的值变为True时,就不再向后移,而要移到最后一个记录,程序代码如下:
Data1.Recordset.MoveNextIfData1.Recordset.EOFThenData1.Recordset.MoveLast(6)Update方法Update方法用于将修改的记录内容保存到数据库中。7.3.2Data控件的记录集2.Data控件记录集的常用属性(1)BOF和EOF属性BOF和EOF属性可以用来设置记录指针的位置。当记录集打开后,记录指针指在第一个记录,BOF属性为False,再向前移一次BOF属性为True,移到记录集边界没有当前记录行;当记录指针移到最后一个记录时,EOF属性为False,再向后移一次EOF属性为True,移到记录集的边界,没有当前记录行。(2)RecordCount属性RecordCount属性返回记录集的记录总数,是只读属性。当记录集更新频繁时,为了获得RecordCount属性的准确值,应在获取RecordCount属性之前先调用一次MoveLast方法。7.3.2Data控件的记录集(3)BookMark属性BookMark属性用于返回或设置当前记录指针的书签。例如,在Score表中查找学号为“2003010104”的记录,并用书签记住位置,下次可以重新定位到该位置,程序代码如下:DimBookMark1Data1.Recordset.FindFirst"学号='2003010104'"BookMark1=Data1.Recordset.BookMark '保存书签……Data1.Recordset.BookMark=BookMark1 '重新定位到书签位置7.3.2Data控件的记录集【例7-2】使用五个文本框Text1~Text5输入数据表Score的学号、姓名、语文、数学和英语字段,并使用按钮实现记录的移动、添加、删除和修改操作。界面设计:文本框Text1~Text5用来输入数据表Score的学号、姓名、语文、数学和英语字段;一个Data控件Data1与数据库StudentAd.mdb绑定,Data控件运行时设置为不可见;八个按钮Command1~Command8,其中Command1~Command4实现将记录集的记录移到第一个、前一个、下一个和最后一个,Command5~Command7实现对记录的添加、删除和修改操作,Command8用来结束程序。运行界面如图7.16所示。图7.16运行界面7.3.2Data控件的记录集属性设置:
Data1的DatabaseName和RecordSource属性与【例7-1】中一样设置,并将Visible属性设置为False。文本框Text1~Text5作为数据感知控件与【例7-1】中一样设置其DataSource和DataField属性。按照上图设置各按钮和标签的Caption属性。程序代码如下。7.4ADO数据对象访问技术
7.4.1ADOData控件的使用由于ADOData控件不是VB的内部控件,因此在使用之前必须将其添加到控件箱中。通过用鼠标右键单击控件箱,在快捷菜单中选择“部件”菜单项,打开“部件”对话框选择“MicrosoftADODataControl6.0(OLEDB)”复选框,则在控件箱中增加了ADOData控件的图标。将ADOData控件放置到窗体中,ADOData控件的外观如图7.17所示,默认控件名为“Adodc1”。
图7.17ADOData控件7.4.1ADOData控件的使用1.ADOData控件的常用属性(1)ConnectionString属性ConnectionString属性是一个字符串,用来建立到数据源的连接。可以是OLEDB文件(.UDL)、ODBC数据源(.DSN)或连接字符串,当连接打开时ConnectionString属性为只读。在窗体中放置ADOData控件Adodc1,在属性窗口单击“ConnectionString”属性右侧的
按钮,打开如图7.18所示的属性页。图7.18属性页7.4.1ADOData控件的使用例如,在“提供程序”选项卡中选择在“MicrosoftJet3.51OLEDBProvider”如图7.19(a)所示,单击“下一步”按钮,在出现的“连接”选项卡中选择“C:\StudentAd.mdb”文件如图7.19(b)所示,单击“测试连接”按钮,成功后单击“确定”按钮,则创建ADOData控件的连接就完成了。(a)“提供程序”选项卡(b)“连接”选项卡图7-19建立OLEDB连接7.4.1ADOData控件的使用(2)RecordSource属性RecordSource属性返回或设置记录的来源,可以是数据库表名、查询名或SQL语句。在Adodc1的属性窗口中单击RecordSource右侧的
按钮,则显示如图7.20所示的属性页。图7.20RecordSource属性页7.4.1ADOData控件的使用(3)UserName属性UserName属性是用户名称,当数据库受密码保护时,需要指定该属性。这个属性可在设置ConnectionString属性时在图7.19(b)中设置。(4)Password属性Password属性设置ADORecordset对象创建过程中所使用的口令。当访问一个受保护的数据库时是必须的,这个属性也是在图7.19(b)中设置。该属性设置值是只写的,不能从Password属性中读出。7.4.1ADOData控件的使用2.ADOData控件记录集的常用方法ADOData控件对数据的操作主要由记录集Recordset对象的属性和方法来实现。(1)AddNew方法AddNew方法是创建新记录,与Data控件记录集的AddNew方法相同。(2)Delete方法Delete方法可以用于删除Recordset的记录,删除完记录后与数据库绑定的控件上还显示该记录,直到将记录指针移到其它记录。语法:
记录集.DeleteaffectRecord(3)Move方法和Move方法群组Move方法和Move方法群组用于移动Recordset对象记录指针的位置,Move方法可以移动到任意位置。语法:
记录集.Move移动的记录数[,开始位置]移动的记录数:指移动的记录行数,为长整型。开始位置:adBookmarkCurrent(默认)从当前记录开始,adBookmarkFirst为从第一条记录开始,adBookmarkLast为从最后一条记录开始。7.4.1ADOData控件的使用(4)Update方法Update方法用于保存对recordset对象的当前记录所做的所有更改。使用Update方法保存自从调用AddNew方法,或自从现有记录的任何字段值发生更改之后,对Recordset对象的当前记录所作的所有更改。(5)Find方法Find方法用来查找指定的记录,并指定查找的条件。语法:
记录集.Find(准则,跳行,搜索方向,起始位)7.4.1ADOData控件的使用【例7-3】使用ADOData控件实现对StudentAd.mdb数据库的Score表(学生成绩)的输入和显示。界面设计:文本框Text1~Text5用来输入数据表Score的学号、姓名、语文、数学和英语字段;一个ADOData控件Adodc1;四个按钮Command1~Command4实现对记录的添加、删除、修改和移动操作。(1)在工具箱中添加ADOData控件,并放置在窗体中为Adodc1。(2)设置窗体控件属性设置Adodc1控件的“ConnectionString”连接到StudentAd.mdb数据库,如上图7.19所示,设置“RecordSource”属性将记录源设置到Score表,如图7.20所示。
7.4.1ADOData控件的使用设置文本框Text1~Text5的Text属性为空,设置DataSource属性为Adodc1,设置DataField属性分别为学号、姓名、语文、数学和英语字段。设置按钮Command1~Command4的Caption属性,如图7.21所示。程序代码如下:PrivateSubCommand1_Click()'单击添加按钮Adodc1.Recordset.AddNewEndSub图7.21运行界面7.4.1ADOData控件的使用单击删除按钮删除当前记录,并将记录指针移动到最后一个记录,使控件不再显示已删除记录。PrivateSubCommand2_Click()'单击删除按钮Dimmsgmsg=MsgBox("要删除吗?",vbYesNo,"删除记录")Ifmsg=vbYesThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveLastEndIfEndSub
PrivateSubCommand3_Click()'单击修改按钮Adodc1.Recordset.UpdateEndSub7.4.1ADOData控件的使用单击移动按钮出现输入框,在输入框中输入移动数可以移动记录指针当任意位置,如果输入的移动数超出范围,则移到最后一个记录。PrivateSubCommand4_Click()'单击移动按钮DimnAsIntegern=Val(InputBox("请输入移动记录数","移动记录"))Ifn=0ThenExitSubElseAdodc1.Recordset.MovenIfAdodc1.Recordset.EOFThenMsgBox"移动出界!",vbOKOnly,"移动"Adodc1.Recordset.MoveLastEndIfEndIfEndSub7.4.1ADOData控件的使用3.ActiveX数据感知控件DataGrid控件用于浏览和编辑完整的数据库表和查询,下面介绍创建DataGrid控件的步骤:在使用DataGrid控件之前必须在控件箱中添加部件,在部件选项卡中选择“MicrosoftDataGridControl6.0(OLEDB)”复选框,则DataGrid控件就添加在控件箱中。在窗体上创建ADOData控件,并设置“ConnectionString”和“RecordSource”属性,链接数据源。在窗体上放置DataGrid控件就出现空白的表格,并将“DataSource”属性设置到ADOData控件,然后用鼠标右键单击该DataGrid控件,然后选择“检索字段”菜单项,就会用数据源的记录集来自动填充该控件。也可以使用“属性页”选项卡来设置该控件的适当属性,重新设置该网格的大小和需要显示的列。7.4.1ADOData控件的使用【例7-4】使用DataGrid控件显示StudentAd.mdb数据库的学生信息和学生成绩,需要显示“学号”、“姓名”、“性别”、“语文”、“数学”和“英语”字段,当单击“查询”按钮可将符合所选“性别”的记录在DataGrid控件中显示。在窗体中放置DataGrid控件DataGrid1。在窗体上创建ADOData控件Adodc1,并设置“ConnectionString”连接到StudentAd.mdb数据库;“RecordSource”属性为数据源,必须使用SQL语句如下:SELECTScore.学号,Score.姓名,Score.语文,Score.数学,Score.英语,Student.性别FROMScore,Studentwhere(Score.学号=Student.学号)因此“RecordSource”属性的设置如图7.22(a)所示“命令类型”设置为“1-adCmdText”,在“命令文本”框中输入SQL语句。设置DataGrid控件DataSource属性为Adodc1。用鼠标右键单击DataGrid1控件,选择“检索字段”菜单项,则DataGrid1控件的表格中的各列字段用数据源的记录集来填充。7.4.1ADOData控件的使用用鼠标右键单击DataGrid1控件,选择“属性”菜单项打开属性页,如图7.22(b)所示。(a)Adodc1的属性页(b)DataGrid1的属性页图7-22属性页7.4.1ADOData控件的使用(6)程序设计当单击“查询”按钮时,将所选性别的记录显示在DataGrid1中。程序代码如下:PrivateSubCommand1_Click()'单击查询按钮DimSQLStringAsStringDimsexAsBooleanIfOption1.Value=TrueThensex=TrueElsesex=FalseEndIfSQLString="SELECTScore.学号,Score.姓名,Score.语文,Score.数学,Score.英语,"_&"Student.性别FROMScore,Student"_&"Where(Score.学号=Student.学号)and(Student.性别="&sex&")"Adodc1.RecordSource=SQLStringAdodc1.RefreshDataGrid1.RefreshEndSub7.4.1ADOData控件的使用运行界面如图7.23所示,如果单击“查询”按钮,将根据所选“性别”重新使用SQL语句设置Adodc1的数据源。则DataGrid1显示符合查询条件的记录。图7.23运行界面7.4.2数据窗体向导使用数据窗体向导应先将其添加到“外接程序”菜单中,步骤如下:(1)选择“外接程序”菜单“外接程序管理器…”菜单项。(2)出现“外接程序管理器”窗体,如图7.24所示。选择“VB6数据窗体向导”,单击“加载/卸载”复选框将数据窗体向导加载。则在“外接程序”菜单就出现了“数据窗体向导”菜单项。图7.24数据窗体向导7.4.2数据窗体向导【例7-5】使用数据窗体向导在窗体的文本框中显示StudentAd.mdb数据库的Score表(学生成绩)各字段。选择“外接程序”菜单“数据窗体向导”菜单项,出现“数据窗体向导”窗口第一屏。单击“下一步”按钮,出现第二屏选择数据库格式,选择“Access”。单击“下一步”按钮,出现第三屏输入数据库名称,输入“C:\StudentAd.mdb”。单击“下一步”按钮,出现第四屏选择窗体名称、布局和绑定类型,如图7.25(a)所示。选择以“单个记录”形式绑定ADO数据控件,窗体名称为Form1。单击“下一步”按钮,出现第五屏选择记录源为表Score和需要显示的字段,如图7.25(b)所示。7.4.2数据窗体向导(a)第四屏(b)第五屏图6-25数据窗体向导7.4.2数据窗体向导单击“下一步”按钮,在第六屏选择在界面上显示的按钮控件。出现“完成”界面,单击“完成”按钮就自动生成窗体。运行界面如图7.26所示。图7.26运行界面7.4.2数据窗体向导这个窗体是完全可运行的,程序代码也已自动生成,用户可以修改窗体的布局和程序代码。窗体的属性设置如表7.3所示。对象类型对象名属性属性值AdoDatadatPrimaryRSConnectionStringC:\StudentAd.mdbRecordSourceScoreLabellblLabelsIndex0、1、2、3、4Caption学号:姓名:数学:英语:语文:TexttxtFieldsIndex0、1、2、3Text空CommandcmdAddCaption添加cmdDeleteCaption删除cmdUpdateCaption更新cmdRefreshCaption刷新cmdCloseCaption关闭表7.3窗体中对象的属性设置7.4.3ADO编程模型1.ADO、DAO和RDO在VB中可以使用三种数据访问接口:ADO是ActiveX数据对象(ActiveDataObject),是访问OLEDB中所有列席数据的对象模型。DAO是数据访问对象(DataAccessObject),访问Jet本地或SQL数据的对象模型。RDO是远程数据对象(RemoteDataObject),访问ODBC中关系数据的对象模型。ADO是最简单、最灵活的数据访问接口,可以访问各种类型的数据,而RDO和DAO只能访问关系数据,因此最好使用ADO。2.ADO编程模型ADO访问数据是通过OLEDB来实现的。它是连接应用程序和OLEDB数据源之间的一座桥梁,提供的编程模型可以完成几乎所有的访问和更新数据源的操作。ADO对象模型定义了一个可编程的分层对象集合,它支持部件对象模型和OLEDB数据源,对象模型相对简单,易于使用。7.4.3ADO编程模型使用ADO对象模型的Connection,Command和Recordset对象编程之前,应将ADO函数库设置为引用项目。选择“工程”菜单“引用”菜单项,出现“引用”对话框,选择“MicrosoftActioveXDataObject2.1Library”来实现。如图7.27所示。图7.27引用部件7.4.3ADO编程模型3.使用ADO编程使用ADOData控件可以不用编程就实现数据库表的显示和输入,使用ADO对象模型则可以编程实现对数据库的处理,比ADOData控件更灵活,功能更强大。(1)Connection对象使用Connection对象创建与StudentAd数据库连接的步骤如下:创建Connection对象例如,创建一个新Connection对象: DimcnnStudentAsADODB.Connection SetcnnStudent=NewConnection或者: DimcnnStudentAsNewConnection7.4.3ADO编程模型设置ConnectionString属性设置ConnectionString属性用来建立到数据源的连接,用Provider指定提供者的名称,用DataSource指定连接数据源名称,用UserID指定打开连接时使用的用户名称,用Password指定打开连接时使用的密码。不同的OLEDB提供者的Provider参数如表7.4所示。例如,将Connection对象连接到StudentAd数据库:cnnStudent.ConnectionString="Microsoft.Jet.OLEDB.3.51;DataSource=C:\StudentAd.mdb"Provider参数值Provider参数值MicrosoftJetMicrosoft.Jet.OLEDB.3.51MicrosoftODBCDriverMSDASQLOracleMSDAORASQLServerAQLOLEDB表7.4Provider参数7.4.3ADO编程模型打开连接使用Open命令打开一个连接,打开连接后就可以连接执行命令或处理结果。例如,打开连接:cnnStudent.Open或者:cnnStudent.ConnectionString="Provider=Microsoft.Jet.OLEDB.3.51;DataSource=C:\StudentAd.mdb"关闭连接使用完连接后,可以使用Close方法断开与数据源的连接。在使用完连接就关闭连接是比较好的编程习惯。例如,关闭连接: cnnStudent.Close7.4.3ADO编程模型(2)Command对象Command对象是一类特定的命令,用于对数据源执行特定操作。以数据库对象表、视图、存储过程为基础,或以SQL命令为基础。(3)Recordset对象Recordset对象是用来查看和修改数据库内容的主要方式。创建Recordset对象例如,创建一个Recordset对象:DimrsScoreAsRecordsetSetrssScore=NewRecordset打开Recordset对象语法:记录集.OpenSource,ActiveConnection,CursorType,LockType,Options7.4.3ADO编程模型记录集同样支持AddNew、Delete、Move、Find、Update和Close方法。【例7-6】使用ADO编程模型在窗体的文本框中输入和操作StudentAd.mdb数据库的Score表(学生成绩)的各字段。界面设计:在窗体界面上放置五个文本框数组Text1(0)~Text1(4)分别用来显示Score表的学号、姓名、语文、数学、英语字段,四个按钮数组Command1(0)~Command1(3)分别用来移动记录到第一个、前一个、下一个和最后一个。运行界面如图7.28所示。
程序代码如下。图7.28运行界面7.5可视化数据库工具7.5.1数据环境设计器1.给工程添加一个数据环境设计器由于数据环境设计器是一种ActiveX设计器,因此在使用之前,首先应将它添加到工程中去,有两种方法添加数据环境设计器:(1)在工程中添加一个数据环境设计器要添加一个数据环境设计器对象到VB工程中,选择“工程”菜单“添加DataEnvironment”菜单项,则数据环境设计器窗口就会出现在工程资源管理器窗口。(2)使用数据工程VB提供了“数据工程”模板,可以自动在工程中添加数据环境设计器和一个报表设计器。选择“文件”菜单“新建工程”菜单项,在出现的“新建工程”对话框中选择“数据工程”模板,则新建了一个数据工程,包括一个窗体、一个数据环境设计器和一个报表设计器。7.5.1数据环境设计器为了通过数据环境对象访问数据库,在数据环境设计器中至少有一个Connection对象,创建数据环境设计器后就有一个Connection1,如图7.29所示,可以在属性窗口中修改DataEnvironment1对象和Connection1对象的属性。
图7.29数据环境设计器7.5.1数据环境设计器2.连接对象Connection对象用于管理到数据库的连接,必须在数据环境对象中将Connection对象连接到数据源,在DataEnvironment设计器中定义一个Connection对象的步骤如下:在Connection对象Connection1上单击鼠标右键,在快捷菜单中选择“属性”菜单项,则会出现“数据链接属性”选项卡(与设置ADOData控件的ConnectionString属性设置的方法相同)。在“提供者”选项卡中选择“MicrosoftJet3.51OLEDBProvider”.单击“下一步”按钮,在出现的“连接”选项卡中,选择数据库名称,例如,输入“C:\StudentAd.mdb”;然后,单击“测试连接”按钮,如果测试连接成功则建立了连接。7.5.1数据环境设计器3.命令对象一旦创建了数据库的连接,就可以使用Command对象,它可以建立在数据表、视图、SQL查询基础上,也可在命令对象之间建立一定的关系,从而获得一系列相关的数据集合。命令对象必须与连接对象结合在一起使用。定义一个Command对象步骤如下:用鼠标右键单击数据环境窗口中的Connection对象Connection1,选择“添加命令”菜单项,或单击工具栏中“添加命令”按钮来创建命令对象。则添加了Command1命令对象,用鼠标右键单击Command1对象,选择“属性”菜单项打开“属性”选项卡,如图7.30(a)所示。在属性选项卡中输入它所使用的数据源。7.5.1数据环境设计器例如,将数据库对象设置为“表”,对象名称通过下拉箭头选择表“Score”,则在DataEnvironment设计器中就可看到Command、Recordset、Connection和Field对象,数据环境的结构如图7.30(b)所示。(a)Command对象属性(b)数据环境设计器图7-30定义Command对象7.5.1数据环境设计器4.创建用户界面使用数据环境的命令来创建一个用户界面是非常简单的。只要打开一个窗体,并把命令对象从DataEnvironment设计器窗口拖到窗体中去,在Command对象中定义的所有字段都自动添加到窗体中了。例如,将数据环境设计器中的Command1对象拖放到窗体中,则所有的字段都用文本框显示,窗体中的控件属性已自动设置了,运行界面如图7.31所示。图7.31运行界面7.5.1数据环境设计器5.使用代码访问DataEnvironment设计器创建了Command对象以后,记录集的名字就自动定为“mand对象名”,就可以使用代码来访问记录集。例如,添加了“Command1”命令,“mand1”就是对应的Recordset对象名。如果要向下移动Score表记录集中的记录指针,程序代码如下:denStudent.mand1.MoveNext7.5.2数据视图窗口1.打开数据视图选择“视图”菜单“数据视图窗口”菜单项就可以打开数据视图,在“数据视图”窗口中可以看到工程与数据库的当前连接。
2.数据链接和数据环境连接数据视图显示一个树状结构,有两个文件夹:即数据链接(DataLinks)和数据环境连接(DataEnvironmentConnection)。当在工程添加了数据链接和数据环境设计器时,数据视图窗口如图7.32所示。图7.32数据视图7.5.3查询设计器下面介绍使用查询设计器来生成一个查询,将Student、Score和Department三个表中的学号、姓名、系别、性别、语文、数学和英语字段组合起来生成查询。生成的查询如图7.33所示。图7.33查询显示7.5.3查询设计器生成查询的步骤:
首先配置一个数据源,可以用数据环境作数据源。
选择“工程”菜单“添加DataEnviroment”菜单项向工程中添加一个数据环境设计器对象DataEnvironment1,自动有一个Connection1对象,将Connection1连接到StudentAd.mdb;添加命令Command1连接到Score表数据源。打开查询设计器单击数据环境设计器的Command1命令,在快捷菜单中选择“添加子命令”菜单项,添加一个Command2命令,在如图7.30(a)属性页的“通用”选项卡中选择“SQL语句”,单击“SQL生成器”按钮,则出现如图7.34所示的空白查询设计器窗口。图7.33查询显示7.5.3查询设计器打开“数据视图”窗口,将Student、Score和Department三个表拖放到查询设计窗口中。通过单击Student表的“学号”字段与Score表的“学号”字段建立关联,并将Score表的“系别代码”和Department表的“系别代码”字段建立关联。单击要显示的字段,包括“学号”、“姓名”、“性别”、“系别”、“语文”、“数学”和“英语”字段。单击鼠标右键,选择“运行”菜单项,则在查询设计窗口中显示满足条件的记录。如图7.35所示。7.5.3查询设计器图7.35查询设计窗口7.5.3查询设计器关闭查询设计窗口,出现保存对话框,将查询保存为Command2,在数据环境设计器有两个Command对象:Command1和Command2,如图7.36(a)所示。在数据环境设计器窗口中用鼠标右键单击Command2,在快捷菜单中选择“属性”,选择“关联”选项卡,将Command1与Command2通过“学号”字段关联,如图7.36(b)所示。(a)数据环境设计器(b)属性设置图7-36数据环境设计7.6设计报表7.6.1报表设计器1.给工程添加一个数据报表设计器选择“工程”菜单“添加DataReport”菜单项,就可以将数据报表设计器添加到工程中,则出现如图7.37所示的DataReport1对象。图7.37DataReport1窗体7.6.1报表设计器2.数据报表设计器的组成数据报表设计器由DataReport对象、Section对象和DataReport控件组成。(1)DataReport对象DataReport对象与VB的窗体相似,具有一个可视化的设计器和一个代码模块,可以使用设计器创建报表的布局,也可以在代码模块中添加代码。(2)Section对象数据报表设计器的每一个部分由Section对象表示,如图7.37中的Section1~Section5。设计时,每一个Section由一个窗格表示,可以在窗格中放置和定位控件,也可以编程改变其外观和行为。7.6.1报表设计器(3)DataReport控件当一个新的数据报表设计器被添加到工程时,在窗体的控件箱出现“数据报表”和“General”两个选项卡,如图7.38所示。但在数据报表设计器上只能使用“数据报表”的控件,不能使用General的控件(内部控件)或ActiveX控件。7.38控件箱7.6.2报表的设计1.指定数据源用数据环境设计器配置一个数据源。例如,使用数据库StudentAd.mdb的Connection1连接对象,建立一个以Score表为数据源的Command1命令对象。2.将数据报表设计器添加到工程中选择“工程”菜单“添加DataReport”菜单项,将数据报表设计器添加到工程中,则出现未设计的DataReport1对象。3.设置DataReport对象属性在属性页设置DataReport1对象的属性,将DataSource属性设置为数据环境对象“DataEnvironment1”;DataMember属性设置为“Command1”命令。4.检索结构在DataReport1上单击鼠标右键,选择“检索结构”菜单项,出现对话框“用新的数据层次代替现在的报表布局吗?”,单击“是”按钮,则在报表设计器中就添加了与Command1命令对应的分组,自动出现了“分组标头”和“分组注脚”。7.6.2报表的设计5.添加控件可以通过报表设计器的工具栏来设计报表中的数据项。不过更快捷的方法是直接将数据环境设计器中的各数据字段拖放到DataReport1对象的相应部分中。设计好的DataReport1界面如图7.39所示。(1)在报表标头中设置报表名(2)在分组标头中设置“学号”和“姓名”(3)在细节中显示“语文”、“数学”和“英语”(4)在细节中显示“系别”图7.39查询显示7.6.2报表的设计6.设置布局(1)设置网格为了方便控件位置的放置,将DataReport1的“GridX”和“GridY”属性都设置为5。(2)添加直线使用控件箱中的RptLine在报表标头的标题下面添加两条直线,在细节下面也添加一条直线。(3)调节各控件的布局调节各控件的大小和布局,页标头没有控件因此将高度调窄,细节部分的高度调整得尽可能窄,因为细节是重复的部分,避免不必要的空间,显示的报表如图7.40所示。7.6.2报表的设计图7.40报表显示7.6.2报表的设计7.显示数据报表有两种方法可以在运行时显示数据报表:(1)选择“工程”菜单“属性”菜单项,将“启动对象”设置为DataReport1,则启动工程时就显示数据报表。(2)使用程序代码显示数据报表使用“Show”方法显示数据报表:
DataReport1.Show在运行时单击“form1”窗体中的cmdShow按钮,显示报表。7.6.2报表的设计8.打印报表打印一个数据报表有两种方法:使用“打印”按钮或使用PrintReport方法打印。(1)使用“打印”按钮当运行显示数据报表时,如上图7.40所示,单击工具栏中的“打印”按钮,则出现“打印”对话框,然后可以进行打印设置。(2)使用PrintReport方法PrintReport方法用于在运行时打印用数据报表设计器创建的数据报表。语法:
对象.PrintReport(showDialog,页面范围,起始页,终止页)7.5.3向报表添加Function控件1.Function控件的内置函数Function控件有各种内置函数,仅在分组内的所有记录都被处理后,才可以计算值,因此,Function控件只能被放置在比所计算数据层次高一级的部分中。例如,被放置在分组注脚中或报表注脚中。Function控件包含的函数如表7.5所示。函数名功能函数名功能Sum合计一个字段的值。StandardDeviation显示一列数字的标准偏差。Min显示一个字段的最小值。StandardError显示一列数字的标准错误。Max显示一个字段的最大值。ValueCount显示包含非空值的字段数。Average显示一个字段的平均值。RowCount显示一个报表部分中的行数。表7.5Function控件包含的函数7.5.3向报表添加Function控件2.创建Function控件的步骤在数据报表设计器中创建一个Function控件的步骤如下:(1)在适当的注脚部分绘制一个Function控件(2)设置Function控件的DataMember属性为数据环境的一个Command对象,DataField属性为一个可运算的数值字段,设置FunctionType属性为一种运算函数。
在前面创建的数据报表DataReport1中添加三个Function控件Function1、Function2和Function3,计算每门课程的平均成绩,Function控件的属性设置如表7.6所示。属性属性值属性属性值属性属性值NameFunction1NameFunction2NameFunction3DataMemberCommand1DataMemberCommand1DataMemberCommand1DataField语文DataField数学DataField英语FunctionType1-rptFuncAveFunctionType1-rptFuncAveFunctionType1-rptFuncAve表7.6Function控件的属性7.5.3向报表添加Function控件修改报表设计界面,将标签放置在“页标头”,将文本框放置在“细节”中,将Function1、Function2和Function3放置在“报表注脚”中,并在“报表注脚”中添加一个标签,报表设计界面如图7.41所示。图7.41报表设计界面7.5.3向报表添加Function控件在运行时显示报表如图7.42所示。图7.42报表设计界面7.7多媒体数据库7.7.1将多媒体数据存放在字段1.在Access应用程序添加多媒体数据字段例如,在StudentAd.mdb数据库中,将Student表的学生信息中增加一个“照片”字段,将每个学生的照片存放在该字段中。在Access中输入“照片”字段内容的步骤如下:(1)在Access中打开StudentAd.mdb数据库,设计数据表Studen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024城市基础设施建设项目特许经营权协议
- 2024年幼儿园教师岗位聘任协议书模板
- 2024专业建设工程项目设计合同范本专业版
- 2024家庭保姆雇佣合同样本
- 2024年先进制造业生产线自动化改造合同
- 2024年度家电行业C型钢部件加工合同
- 2024年废纸回收海运出口协议
- 2024年商场清洁服务合同
- 2024年建筑工程设计与施工一体化合同
- 2024年度智能硬件设备采购与安装合同
- 医院感染管理培训课件消毒剂的选择与使用
- 平台分销返佣合作协议
- 中国城市行政代码
- 低纤维蛋白原血症的护理查房
- 数学4教材介绍
- 全国大学生职业生涯规划大赛
- 肩关节镜术的健康宣教
- 关于学校安全保卫工作存在的问题及对策
- 2024年广西铝业集团有限公司招聘笔试参考题库附带答案详解
- 2024年西藏开发投资集团有限公司招聘笔试参考题库含答案解析
- 爱校主题班会课件
评论
0/150
提交评论