410 likes | 597 Views
第 8 章 数据控件与数据绑定控件的使用. 本章要点: 数据控件的常用属性、方法和事件 数据绑定控件的概念 常用数据绑定控件的使用方法 高级数据绑定控件的使用方法 自动创建数据窗体的方法 利用数据控件显示、修改和查询数据的方法 利用数据控件和 SQL 语句进行数据查询的方法. 8.1 数据控件和数据绑定控件. 8.1.1 数据控件和数据绑定控件的概念 1 .数据控件 数据控件是把数据库中的信息和用来显示这些信息的数据绑定控件连接起来的桥梁。. 2 .数据绑定控件.
E N D
第8章 数据控件与数据绑定控件的使用 • 本章要点: • 数据控件的常用属性、方法和事件 • 数据绑定控件的概念 • 常用数据绑定控件的使用方法 • 高级数据绑定控件的使用方法 • 自动创建数据窗体的方法 • 利用数据控件显示、修改和查询数据的方法 • 利用数据控件和SQL语句进行数据查询的方法
8.1 数据控件和数据绑定控件 • 8.1.1 数据控件和数据绑定控件的概念1.数据控件 数据控件是把数据库中的信息和用来显示这些信息的数据绑定控件连接起来的桥梁。
2.数据绑定控件 • 可以与Data控件一起使用的标准数据绑定控件主要包括以下几种: (1)复选框 (2)图片框 (3)标签 (4)图像框 (5)文本框 (6)列表框 (7)组合框 (8)OLE容器控件 除标准的数据绑定控件外,Visual Basic还提供了一些可添加到工程中的ActiveX控件
8.1.2 数据控件的常用属性 • 1.Connect属性
2.DatabaseName属性 DatabaseName属性用来指定具体使用的数据库。 3.RecordSetType属性 RecordSetType属性用来确定记录集类型,记录集类型可以是数据库中的表或者是一个存储查询。 4.RecordSource属性 RecordSource确定具体可访问的数据,可以是数据库中的单个表或一个存储查询,也可以是使用SQL查询语言的一个查询字符串。
5.RecordSet对象的常用属性 (1)Eof和Bof属性 (2)RecordCount属性 6.EofAction属性和BofAction属性
7.ReadOnly属性 • 该属性用来控制能否对记录集进行写操作。该属性值为True时,不能对记录集进行写操作,该属性值为False时,可以对记录集进行写操作。 8.1.3 数据控件的常用方法 1.Refresh方法 2.UpdateRecord方法 3.UpdateControls方法
8.1.4 数据绑定控件的常用属性 • 1.DataSource属性 数据源属性,指定数据绑定控件需要绑定到的Data控件各称。 • 2.DataField属性 该属性用来指定数据绑定控件与Data控件形成的记录集中的哪个字段相绑定,绑定过后,该数据绑定控件就可以显示(修改)对应字段的内容了。 • 3.DataChanged属性 该属性用来指出显示在数据绑定控件里的数据是否已经被改变,如果改变了,值为True,没有改变,值为False。
【例】不编写一行代码的数据库表浏览程序的设计方法。请设计一个数据库应用程序用来浏览“教学”数据库中的“教师表”,程序的设计界面如图。【例】不编写一行代码的数据库表浏览程序的设计方法。请设计一个数据库应用程序用来浏览“教学”数据库中的“教师表”,程序的设计界面如图。 题意分析:要浏览“教学”数据库中的“教师表”,可使用一个Data控件,通过设置它的DatabaseName和RecordSource属性使Data控件和“教师表”联系在一起。可用若干个Text控件来显示“教师表”中的各字段内容,只需设置各Text控件的DataSource属性和DataField属性即可。
8.1.5 数据控件的记录集对象的常用方法 • 1.Move方法 (1)MoveNext方法 (2)MovePrevious方法 (3)MoveFirst方法 (4)MoveLast方法 (5)Move [n]方法 【例】利用Move方法实现数据库浏览程序。编写一个浏览“教学”数据库中的“教师表”信息的数据库应用程序,在运行时不显示Data1控件,通过五个按钮来实现记录指针的移动,程序的设计界面如图所示。
题意分析:要浏览数据表中的记录而又不使用Data控件上题意分析:要浏览数据表中的记录而又不使用Data控件上 的按钮,只能使用Data控件的Move方法。
2.Find方法 (1)FindFirst方法 (2)FindLast方法 (3)FindNext方法 (4)FindPrevious方法 【例8-3】利用Find方法查找满足条件记录。在例8-2的基础上,增加查找功能,设计完成的界面如图8-6所示。在文本框Text9中输入人的姓名后,按“按姓名精确查找”框架控件中的相应按钮,将按姓名进行精确查找,如果找不到则显示提示框,并把记录指针置于查找前的位置。在文本框Text10中输入人的姓名中包含的字符后,按“按姓名模糊查找”框架控件中的相应按钮,将查找姓名中包含该字符的记录,如果找不到则显示提示框,并把记录指针置于查找前的位置。
3.Seek方法 使用Seek方法可在Table表中查找与指定索引规则相符的 第一个记录,并使之成为当前记录。其语法格式为: 记录集对象.Seek Comparison,Keyl,Key2,…,Keyn 【例8-4】利用Seek索引查找满足条件的记录。在例8-3 的基础上,增加索引查找的功能。程序设计界面如图8-8 所示,在程序运行中,输入教师号后按索引查找,将按 索引查找相应的记录。如果找不到则显示提示框,并把 记录指针置于查找前的位置。
题意分析:索引查找使用SEEK方法。索引查找数据需注意以下三个问题:题意分析:索引查找使用SEEK方法。索引查找数据需注意以下三个问题: • (1)只有表类型的记录集对象才能进行索引查找; • (2)必须设置记录集的对象的Index属性为相应的索引; • (3)调用SEEK方法进行查找。
4.AddNew方法 • AddNew方法用于向数据表中增加记录,增加记录的操作可分成以下三步: (1)调用AddNew方法; (2)在数据绑定控件中输入记录数据,或给字段赋值, 给字段赋值的格式为: Data控件名.RecordSet.Fields("字段名")=值 (3)调用Update方法,添加的记录保存到数据表中。5.Delete方法
6.Edit方法 • Edit方法用于修改记录集的当前记录,使用代码修改记录集的当前记录一般需经过以下四步: (1)定位到要修改的记录使之成为当前记录; (2)调用Edit方法; (3)给各字段赋值; (4)调用Update方法,确定所做的修改。 7.Update方法 Update方法用来把添加的新记录或把当前记录的修改结果保存到数据表中,该方法只能在Edit方法或AddNew方法执行后才能执行。通常在“确认”按钮中调用该方法。
【例8-5】在例8-4的基础上,增加如下功能:增加新记录、删除记录、修改记录、确认、取消等功能。程序的设计界面如图8-10所示,程序运行时,单击“添加记录”按钮将添加一条新记录,单击“修改记录”按钮将修改当前记录,单击“确认”按钮将把增加的新记录或对当前记录的修改写入数据库,单击“取消”按钮将取消所做的添加或修改操作。【例8-5】在例8-4的基础上,增加如下功能:增加新记录、删除记录、修改记录、确认、取消等功能。程序的设计界面如图8-10所示,程序运行时,单击“添加记录”按钮将添加一条新记录,单击“修改记录”按钮将修改当前记录,单击“确认”按钮将把增加的新记录或对当前记录的修改写入数据库,单击“取消”按钮将取消所做的添加或修改操作。 • 题意分析:添加记录、修改记录、确认等操作需执行记录集的AddNew、Edit、Update等方法,取消操作需调用数据控件的Reresh方法或UpdateControls方法。程序刚执行时,“确认”和“取消”按钮应不能使用。执行了“添加记录”或“修改记录”操作后,“添加记录”和“修改记录”按钮应不能用,而“确认”和“取消”按钮应能够使用。执行了“确认”或“取消”操作后,“添加记录”和“修改记录”按钮能够使用,而“确认”和“取消”按钮不能使用。
8.1.6 数据控件的常用事件 • 1.Validate事件 Validate事件的语法如下: Private Sub Data控件名_Validate([1ndex As Integer,]Action As Integer,Save As Integer) 【例8-6】在例8-5的基础上,编程对用户输入的数据进行验证:如果用户输入的“姓名”信息为空,则给出提示信息“姓名不能为空!”,并取消对数据控件的操作。程序运行界面如图8-10(同例8-5)所示 题意分析:当记录指针要从当前记录移走时,应校验用户输入的数据,因此可在数据控件的Validate事件中对输入的姓名信息进行验证。
2.Reposition事件 Reposition事件的语法如下: Private Sub data控件_Reposition([IndexAsInteger]) 【例8-7】编写一个程序设计界面如图8-11所示的程序,该设计界面上有两个MSFlexGrid控件,MSFlexGrid1用来显示教师表的信息,当教师表的记录指针发生变化时,将自动在MSFlexGrid2控件中显示该教师所教的课程。程序运行界面如图8-12所示。 题意分析:本题使用了MSFlexGrid控件来显示记录集的数据,首先应把MSFlexGrid控件加载到Visual Basic环境中,加载方法如下: (1)执行【工程】→【部件】命令,将会出现“部件”对话框”; (2)在“控件”页的列表框中找到“Microsoft FlexGrid Control 6.0”控件并选中它; (3)单击“确定”按钮。
3.Errors事件 • 数据控件能够响应Error事件,当数据访问发生错误时,该事件发生。该事件的格式如下: Private Sub Data1_Error(DataErr As Integer, Response As Integer) • 该事件有两个参数:DataErr和Response。Error事件发生时,把错误代码放在DataErr参数中,根据它的值就可以判断出错误的类型从而可以编写不同的代码来进行处理。Response参数确定程序采取的动作。
8.2 高级数据绑定控件的使用 • 8.2.1 DBlist控件和DbCombo控件的使用
【例8-8】编写一个对课程表进行输入和浏览的程序,要求:输入教师编号的时候根据教师姓名输入。程序的设计界面和运行界面分别如图8-14和图8-15所示。【例8-8】编写一个对课程表进行输入和浏览的程序,要求:输入教师编号的时候根据教师姓名输入。程序的设计界面和运行界面分别如图8-14和图8-15所示。 • 题意分析:要使用教师姓名来输入课程表中的教师编号,可使用DBCombo控件或DBList控件,本题使用DBCombo控件,它的各属性设置可如图8-13所示。
8.2.2 MSFlexGrid控件的使用 • 【例8-9】编写一个修改教师表数据的程序,程序的设计界面如图8-16和8-17所示,程序的运行界面如图8-18和图8-19所示。程序的功能如下:程序运行时,首先出现如图8-18所示的运行界面(一),在网格上单击某条记录,将会显示出如图8-19所示的运行界面(二),在该窗口中,单击的记录信息,并可以修改。若修改了数据,然后按“更新”按钮,则修改的数据保存到“教师表”中。按“返回”按钮将把如图8-19所示的运行界面窗口卸载。 • 题意分析:首先应建立一个窗口,在窗口中放置一个MSFlexGrid控件,用来显示教师表信息。在MSFlexGrid控件上单击,将在另一个窗口中显示在其上单击的那条记录的数据,因此应把数据集的当前记录移到相应记录,可使用MSFlexGrid控件的Row属性。在Form2窗口显示之前(Load事件)应把记录集的当前记录的各字段内容在各控件中显示出来。
8.3 在数据控件中使用SQL语句进行查询 • 在数据控件中也可以使用SELECT语句来实现查询,一般步骤如下: (1)根据给定的条件形成实现查询功能的SELECT语句(以字符串的形式存放); (2)把形成的SELECT语句字符串赋值给Data控件的RecordSource属性; (3)执行Data控件的Refresh方法。 注意:日期型变量要用两个“#”括起来。
【例8-10】编写一个根据姓名查询教师讲课信息的程序。程序的设计界面如图8-20所示。程序运行时,在文本框中输入一个教师的姓名后,单击“显示该教师教课情况”按钮,将会把给定教师的讲课情况显示在MSFlexGrid控件中,如图8-21所示。【例8-10】编写一个根据姓名查询教师讲课信息的程序。程序的设计界面如图8-20所示。程序运行时,在文本框中输入一个教师的姓名后,单击“显示该教师教课情况”按钮,将会把给定教师的讲课情况显示在MSFlexGrid控件中,如图8-21所示。 • 题意分析:在课程表中存放了所有的课程情况,有一个教师编号字段用来表示该课程是哪一个教师教的,但该表中无姓名字段。姓名字段在教师表,因此要根据姓名进行查询,必须首先在教师表和课程表之间按照教师编号相等进行联接(内联接),再在联接的结果中通过Where子句筛选出满足条件的记录。
【例8-11】输入一个日期范围,查找出生日期在该范围内的教师信息。程序的设计界面如图8-22所示,程序的运行界面如图8-23所示。程序执行时,在两个文本框中分别输入两个日期,然后单击“查询”按钮,将从教师表中查询出所有出生日期在这两个日期之间的教师信息并显示在下面的MSFlexGrid控件中。【例8-11】输入一个日期范围,查找出生日期在该范围内的教师信息。程序的设计界面如图8-22所示,程序的运行界面如图8-23所示。程序执行时,在两个文本框中分别输入两个日期,然后单击“查询”按钮,将从教师表中查询出所有出生日期在这两个日期之间的教师信息并显示在下面的MSFlexGrid控件中。 • 题意分析:本题只涉及到一个表,查询条件中涉及到日期,且日期是用户输入的,因此形成查询表达式时,应注意在日期的前面加上“#”。
【例8-12】查询出选课门数超过指定数的学生的学号、选课门数、平均成绩。程序的设计界面如图8-24所示,程序的运行界面如图8-25所示。程序执行时在文本框中输入一个数,然后单击“查询”按钮,将查询出所有选课门数超过该数的学生的学号、选课门数和平均成绩,并在MSFlexGrid控件中显示出来。【例8-12】查询出选课门数超过指定数的学生的学号、选课门数、平均成绩。程序的设计界面如图8-24所示,程序的运行界面如图8-25所示。程序执行时在文本框中输入一个数,然后单击“查询”按钮,将查询出所有选课门数超过该数的学生的学号、选课门数和平均成绩,并在MSFlexGrid控件中显示出来。 • 题意分析:本例要查询学生的选课门数和平均成绩,应把每个学生看成是一个组,然后求每组的选课门数和平均成绩。分组使用GROUP BY子句,求选课门数和平均成绩可以使用统计函数COUNT()和AVG()。最后要求出满足条件的分组——选课门数大于指定数,可使用HAVING子句。
8.4 自动创建数据窗体 • 数据窗体向导是与Visual Basic一同发布的插件之一,利用该向导,用户只需选择一个数据库和记录集,系统就可自动地为用户创建数据窗体。 • 【例8-13】通过“数据窗体向导”创建一个浏览和编辑“教学”数据库中的“学生表”的窗体。 • 创建步骤如下: • (1)启动外接程序管理器 执行【外接程序】→【外接程序程序管理器】命令。 • (2)执行数据窗体向导 执行【外接程序】→【数据窗体向导】命令
(3)选择数据类型 选中“Access”数据类型,单击“下一步”按钮,将会出现“数据窗体向导——数据库”对话框。 • (4)选择数据库 单击“浏览”按钮,找到所需要的“教学”数据库。单击“下一步”按钮,将会出现 “数据窗体向导——Form”对话框。 • (5)设定窗体类型和数据绑定类型 • (6)选择记录源 • (7)选择控件 • (8)完成“学生浏览”窗体的创建
小结 • 本章阐述了利用Visual Basic的数据控件和数据绑定控件开发数据库应用程序的一般方法。通过数据控件,可以方便地与物理数据库相连接,通过数据绑定控件可以显示物理数据库中的数据。本章通过具体的实例详细介绍了数据控件和数据绑定控件的常用属性、事件和方法的使用,着重介绍了利用数据控件进行数据库操作的方法。本章还介绍了利用Visual Basic的数据窗体向导设计数据窗体的方法。利用本章所学的知识可以进行简单的数据库应用程序的开发,但无法进行数据库、表、字段和索引的创建。要创建数据库、表、字段和索引等对象可使用下一章讲到的DAO对象。