第8章数据控件.ppt

上传人:sccc 文档编号:4826661 上传时间:2023-05-17 格式:PPT 页数:123 大小:1.13MB
返回 下载 相关 举报
第8章数据控件.ppt_第1页
第1页 / 共123页
第8章数据控件.ppt_第2页
第2页 / 共123页
第8章数据控件.ppt_第3页
第3页 / 共123页
第8章数据控件.ppt_第4页
第4页 / 共123页
第8章数据控件.ppt_第5页
第5页 / 共123页
点击查看更多>>
资源描述

《第8章数据控件.ppt》由会员分享,可在线阅读,更多相关《第8章数据控件.ppt(123页珍藏版)》请在三一办公上搜索。

1、1,第8章 数据控件与数据绑定控件的使用,2,8.1 VB开发数据库概述,8.1.1 VB数据库开发功能概述VB是微软公司发布的应用程序开发工具,不但具有强大的程序设计能力,还具有强大的数据库编程能力。1.VB6.0数据库编程的特征VB处理的数据库属于关系类型数据库,由不同层次的对象组成。一个数据库由多个表组成,每个表包含若干字段。支持ADO存取模式,即ActiveX Data Object支持OLE DB和COM,即对象连接与嵌入数据库和组件对象模型。其中COM是一种标准,按此标准开发的软件模块可以“插入”到系统中使用。可以针对SQL Server 和Oracle 等不同的数据库服务器开发完

2、善的客户/服务器应用程序。具有管理和显示数据源的数据控件和数据绑定控件。数据控件用于与数据库连接,数据绑定控件用于显示数据表的记录。提供报表设计工具,能够快速生成报表 提供了使用和配置连接的工具与命令,及进行ODBC 开发的API 函数。,3,2.VB作为数据库开发平台的优点(1)简单性 VB为每种数据访问模式提供了相应的控件,通过控件,可以方便地连接数据库,只需编写少量的代码甚至不用编写代码就可以访问和操作数据库。(2)灵活性 VB不象一般数据库那样局限于特定的应用程序结构,也不需要用某些指令对打开的数据库进行操作。(3)可扩充性 在VB中可以用ActiveX控件,这些控件可以由微软公司提供

3、,也可以由第三方开发。有了ActiveX控件,可以在VB中增加新功能。,4,8.1.2 VB6.0支持的数据库种类,数据库编程语言一般都有自己特定格式的数据库。VB默认的数据库格式与Microsoft Access格式相同.可以对其它多种格式的数据库进行操作和处理。VB支持的数据库有以下三类:VB 本地数据库,与Microsoft Access 格式相同。外部数据库,如 dbase,Microsoft FoxPro 等。ODBC 数据库,支持符合ODBC 标准的客户-服务器数据库,如:Microsoft SQL Server,Oracle等。,5,8.1.3 VB6.0支持的数据存取模式,VB

4、6.0支持的数据库存取模式有以下三种:数据存取对象(Data Access Objects,简称DAO)远程数据对象(Remote Data Objects,简称RDO)ActiveX数据对象(ActiveX Data Objects,简称ADO)1DAO简介DAO模式是VB最早期的数据访问模式。是以Microsoft的Jet数据库引擎为核心而发展起来的一组动态链接库。它提供了两种类型来支持数据库:通过Microsoft的Jet数据库引擎来操作本地数据库。通过使用ODBCDirect,来存取ODBC数据库。使用ODBC存取方法,DAO可以访问任何提供标准ODBC驱动程序的客户/服务器数据库。,

5、6,2RDO简介,远程数据库是数据库应用中新兴的领域,随着Internet的推广,网络数据库应用系统日益增加。对于网络应用程序来说,其数据访问端与数据库之间有比较远的距离,使用DAO组件已不能满足远程数据访问的要求,因此应使用远程数据对象RDO来访问数据库。RDO直接与数据库服务器连接,所以它比较适合于客户机/服务器方式。,7,3ADO简介,ADO是最新的数据访问技术,ADO提供了较为高级的访问OLE DB数据源的机制,它结合了DAO和RDO的优点,并提供了OLE DB数据源的入口。OLE DB是一个低层的数据访问接口,它向应用程序提供了一个统一的数据访问方法,利用它可以访问各种数据源,包括传

6、统的关系型数据库、电子邮件系统及自定义的商业对象。,8,8.1.4 SQL Server 数据库的DSN的配置,1开放式数据库互连(ODBC)开放式数据库互连ODBC(Open Database Connectivity)的概念来源于对多个数据库数据存取的需求。在早期的数据库编程中,由于不同的数据库管理系统(DBMS),有自己的数据库格式和嵌入式的SQL语言,即使应用程序完成同样的功能,但只要DBMS选取的不同,则编写的程序将完全不同。程序员为了能够访问不同的数据库而不得不学习多个DBMS的内容。,9,希望摆脱专用数据库本身的约束,对于不同的DBMS,采用统一的编程界面,从而使数据库应用程序在

7、访问另外一种数据库格式时,不需要对源程序进行修改。ODBC开发的最初目标就是为Windows程序员提供一套访问数据库的SQL函数调用,而这些函数的调用采用相同的用户界面。ODBC用户可以用ODBC的SQL语句访问任何支持ODBC标准的数据库,从而使应用程序访问不同的数据库的操作不依赖任何DBMS,也为程序的跨平台开发和移植提供了方便。,10,2DSN的配置,DSN的意思是应用程序用以请求一个连接到ODBC数据源的连接(Connection)的名字,即它代表一个ODBC连接的名称,内含了数据库文件名、所在目录、数据库驱动程序、用户ID、密码等细节,使得应用程序访问数据库时,只要给出事先注册的DS

8、N,而不必考虑以上细节问题,从而使程序中访问数据库变得简单。DSN可以分为以下三种:系统DSN:可以被登录到系统中的所有用户使用用户DSN:只能被建立它的用户使用文档DSN:把信息存储在后缀名为.dsn的文件中,如果文件放在网络共享的驱动器中,就可以被所有安装了相同驱动程序的用户共享。,11,DSN配置步骤如下:,以前边建立的数据库“成绩管理”为例。(1)打开ODBC数据源管理器ODBC数据源管理器用来管理本机上所有的ODBC数据源,如注册新的数据源名称,删除或修改数据源等。单击开始设置 控制面板,打开控制面板窗口;在其中双击管理工具图标,打开管理工具窗口;双击数据源ODBC 图标,即可打开O

9、DBC数据源管理器如图8-2。,图8-2 ODBC数据源管理器,12,(2)选择数据源类型并添加数据源在ODBC数据源管理器中,单击系统DSN选项卡,再单击添加按钮,将出现创建新数据源对话框如图8-3。,图8-3 创建新数据源对话框,13,(3)选择驱动程序在图8-3所示的驱动器列表中,选择“SQL Server”并单击完成按钮,打开向导窗口如图8-4。,图8-4 设置数据源名称及服务器,14,(4)设置数据源 在数据源名称框中输入一个数据源名称(如cjgl),说明框中可不输入,然后在服务器列表框中选择需要连接的SQL Server服务器。(5)设置身份验证方式单击下一步按钮,打开对话框如图9

10、-5所示。在该对话框中,可以设置身份验证方式。若选择使用用户输入登录ID和密码的SQL Server验证,需要输入登录ID和密码,sa是SQL Server2000的系统管理员帐号。,图8-5 设置身份验证方式,15,(6)设置默认的数据库单击下一步按钮,打开设置数据库选项对话框,如图8-6所示。系统默认的数据库为master,在更改默认的数据库为下拉列表框中,选择“成绩管理”,即将默认数据库设置为所需要的数据库。,图8-6 设置数据库连接,16,(7)设置其它属性单击下一步按钮,打开设置其它属性的窗口,如图8-7所示。在此可以设置用于SQL Server消息的语言、数据加密、字符数据转换等等

11、。,图9-7 设置其它属性,17,(8)单击完成按钮,将打开数据源的汇总信息窗口,如图8-8所示。在此窗口中综合显示了数据源的各项设置,从而决定是否创建数据库。,图8-8 数据源汇总信息显示,18,(9)单击测试数据源按钮,可以检查数据源配置是否成功。若配置成功,将显示图8-9所示的对话框。,图8-9 测试数据源结果显示,19,8.2 数据库访问控件的应用,在VB中,开发数据库应用程序有两种方式:一种是利用VB提供的数据库访问控件,另一种是编写程序代码。VB6.0提供了支持DAO、RDO、ADO的特殊控件,以便访问和操作数据库。Data控件可以创建DAO对象,RemoteData控件可以创建R

12、DO对象,ADO Data控件可以创建ADO对象利用这些控件可以方便地连接到数据库并操作数据库,但这些控件并不能显示数据,必须借助数据绑定控件(如文本框等)显示、修改数据。使用数据库访问控件,可以简化开发过程,减少代码编写量,从而提高工作效率。,20,ADO Data控件与Data控件、RemoteData控件相比,ADO Data控件的功能更为强大,使用更为方便。因此本章主要介绍支持ADO的数据控件ADO Data,及与其绑定的数据绑定控件的主要功能及其应用。,21,8.2.1 ADO Data控件及数据绑定控件,ADO Data控件可以说是连接数据库和数据绑定控件的桥梁。通过设置ADO D

13、ata控件的属性,可以让它和已存在的数据库联系起来并能指定访问数据库中的某个表,并通过数据绑定控件(如文本框,复选框等控件),显示数据库中的数据。数据绑定控件用来显示数据表中的数据。需将控件绑定到ADO Data控件上的某字段上,就可显示和修改该字段的数据。,22,文本框(Text):显示或输入数据标签(Label):显示数据复选框(Check):显示逻辑类型字段,True(Yes)/False(No)列表框(List),组合框(Combo):显示数据列表,图像框(Image),图片框(Picture):显示图片,要求字段为二进制类型.OLE容器控件:显示OLE类型字段的数据其它ActiveX

14、控件.,可以与ADO Data控件一起使用的数据绑定控件有:,23,大多数数据绑定控件都有以下这三种属性:(1)DataSource:数据源属性。指定需要绑定到的ADO Data控件的名称。(2)DataField:用来指定绑定到哪个字段上。(3)DataChange:用来指出显示在绑定控件里的数据是否已经被改变,如果改变,值为True,否则值为False。,24,8.2.2 用ADO Data控件建立数据库应用程序,下面通过一个简单的例子,介绍用ADO Data控件建立数据浏览窗体的基本步骤。(1)新建一个标准的VB工程,将ADO Data 控件添加到工具箱中执行菜单工程部件,打开“部件”对

15、话框,在“控件”列表框中选中“Microsoft ADO Data Control 6.0(OLE DB)”项,将ADO Data控件添加到工具箱中。(2)将ADO Data控件添加到窗体上在窗体上,ADO Data控件的外观如图8-10所示,默认控件名称为Adodc1,可以单击其上的箭头按钮在记录之间移动。,图8-10 ADO Data控件的外观,25,(3)设置ADO Data 控件的数据源连接属性操作步骤如下:在Adodc1控件的属性窗口中,选择(自定义)属性右边的按钮,打开属性页对话框,或鼠标右击Adodc1控件,在弹出的快捷菜单中选择属性命令,打开属性页对话框如图8-11所示。在通用

16、选项卡中选择“使用ODBC数据资源名称”,并在下拉列表中选择前边建立的ODBC数据源名“cjgl”。,图8-11 ADO Data控件的 属性页 对话框,26,单击身份验证选项卡(如图8-12),输入用户名(例如 sa)和密码(例如sa)。单击记录源选项卡(如图8-13),在该选项卡中,可以设置ADO Data控件的返回记录的记录源。记录源是从命令对象获取的,可以在命令类型下拉列表中选择用于记录源的命令类型。各种命令类型的含义如表所示。,27,图8-12 身份验证的设置,图8-13 记录源的设置,28,例如要访问学生信息表,选择命令类型为:2-adCmdTable然后在表或存储过程名称下拉列表

17、框中选择“学生信息表”(如图8-13所示)。设置完成后,单击确定按钮。也可以选择命令类型为1-adCmdText,然后在 命令文本(SQL)框中输入如下SQL语句:Select*From 学生信息表设置完成后,单击确定按钮。,29,(4)向窗体中添加其他数据绑定控件,并绑定到Adodc1上 在窗体Form1上,添加5个文本框用于显示字段中的数据,5个标签用于说明对应的字段名(见图8-14)。,图8-14 数据浏览窗体设计界面,30,将控件(如Text)绑定到Adodc1上的方法如下:设置绑定控件的DataSource属性为数据控件名:Adodc1设置绑定控件的DataField属性为要显示的字

18、段名各个文本框的属性设置如表8-2所示.考虑到浏览数据的窗体,不应允许修改数据,所以将文本框的Locked属性设为True,使之只能显示数据而不能修改或输入数据。,31,当所有文本框都通过表8-2所示的属性设置后,即完成了绑定到Adodc1所连接的数据源。这时可运行程序,结果如图9-15所示,可见文本框中显示了学生信息表的第一条记录信息,若单击Adodc1上的按钮,可显示其他记录。,图8-15 数据浏览窗体运行界面,32,8.2.3 ADO Data控件的常用属性及方法,1.ADO Data控件的常用属性介绍如下:Name:名称。默认名称:Adodc1,Adodc2等。Caption:设置显示

19、在控件上的标题。ConnectionString:设置到数据源的连接信息。CommandType:设置返回记录集的类型。CommandType 的值用于指明RecordSource 的 类型。CommandType的取值及含义如下:1-adCmdText:文本类型,可在命令文本框中输入SQL语句。表示返回的记录集是执行SQL语句的结果。2-adCmdTable:表类型。可在表或存储过程名框中选择一个表名称(相当于选择表的所有字段)。表示返回的记录集类型是一个数据表。4-adCmdStoredProc:存储过程类型。,33,ReocordSurce:记录源。返回或设置Recordset的生成方式

20、。可以是SQL语句,表名,查询名等。Recordset:记录集对象。2.ADO Data控件的Refresh方法功能:重新读数据库,刷新记录集。使用格式:Adodc1.RefreshRefresh方法可用于ADO Data控件的数据源连接发生变化时,使ADO Data控件重新连接数据库。也可在执行AddNew方法后,新数据尚未写入数据库时,调用Refresh方法,清除用户所做的添加和修改。,34,8.2.4 RecordSet对象的常用属性及方法,1.RecordSet 对象的常用属性ADO Data控件将数据库中的指定数据提取出来,并放在一个记录集中,RecordSet即记录集对象,指当前数

21、据库中的一系列记录。其主要属性如下:(1)EOF 和 BOF属性这两个属性是反映记录指针是否到记录头和记录尾的标志。如果记录指针位于第一条记录之前,则BOF=True 否则BOF=False。如果记录指针位于最后一条记录之后,则EOF=True 否则EOF=False。EOF 和 BOF属性具有以下特点:如果记录集是空的,则EOF 和 BOF的值都是True如果EOF 和 BOF的值成为True之后,只有当记录指针移到实际存在的记录上,二者的值才会变为False。,35,(2)RecordCount属性 反映记录集中的记录总数。例如要在Adodc1控件上显示记录总数,可用如下语句:Adodc1

22、.Caption=Adodc1.Recordset.RecordCount(3)AbsolutePosition 属性 反映当前记录的位置。若当前显示的是第一条记录,则AbsolutePosition=1例如要在Adodc1控件上显示当前记录的位置,可用如下语句:Adodc1.Caption=Adodc1.Recordset.AbsolutePosition例如要在Adodc1控件上显示当前记录的位置及记录总数,可用如下语句:Adodc1.Caption=Adodc1.Recordset.AbsolutePosition&/&Adodc1.Recordset.RecordCount,36,2.

23、RecordSet 对象的常用方法,(1)Move方法利用ADO Data控件,通过编程的方法进行数据库浏览时,需要用到ADO Data控件的RecordSet对象的Move方法在记录集之间移动记录指针。主要有以下几种方法:MoveNext 方法:记录指针移到下一条记录 MovePrevious 方法:记录指针移到上一条记录 MoveFirst 方法:记录指针移到第一条记录 MoveLast 方法:记录指针移到最后一条记录 Moven 方法:使记录指针前移或后移n 条记录。n 为正数,表示向后移动;n 为负数,表示向前移动.,37,例8-2 设计数据浏览窗体,利用Move方法实现数据库的浏览。

24、在例8-1的基础上,添加按钮如图8-16,运行时不显示Adodc1(设其Visible属性为False),通过按钮实现记录指针的移动。,38,设置新增控件的属性如表。,39,编程如下:Private Sub Form_Load()设置按钮的初始状态CmdFirst.Enabled=False 首记录按钮无效CmdPre.Enabled=False 前移按钮无效CmdNext.Enabled=True 后移按钮有效CmdLast.Enabled=True 末记录按钮有效Label6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&Adodc1.Re

25、cordset.RecordCountEnd Sub,40,Private Sub CmdFirst_Click()Adodc1.Recordset.MoveFirst 记录指针移到首记录(显示首记录)CmdFirst.Enabled=False 让首记录按钮无效CmdPre.Enabled=False 让前移按钮无效CmdNext.Enabled=True 让后移按钮有效CmdLast.Enabled=True 让末记录按钮有效在Label6上显示当前记录号/记录总数:Label6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&Adodc1.

26、Recordset.RecordCountEnd Sub,41,Private Sub CmdPre_Click()Adodc1.Recordset.MovePrevious 记录指针移到前一条记录CmdNext.Enabled=TrueCmdLast.Enabled=TrueIf Adodc1.Recordset.BOF Then 如果记录指针移到首记录之前,Adodc1.Recordset.MoveFirst 则记录指针移到首记录上 CmdFirst.Enabled=False CmdPre.Enabled=FalseEnd IfLabel6.Caption=记录:&Adodc1.Reco

27、rdset.AbsolutePosition&/&Adodc1.Recordset.RecordCountEnd Sub,42,Private Sub CmdNext_Click()Adodc1.Recordset.MoveNext 记录指针移到下一条记录CmdFirst.Enabled=TrueCmdPre.Enabled=TrueIf Adodc1.Recordset.EOF Then 如果记录指针移到了末记录之后 Adodc1.Recordset.MoveLast 则记录指针移到末记录上 CmdNext.Enabled=False CmdLast.Enabled=FalseEnd IfL

28、abel6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&Adodc1.Recordset.RecordCountEnd Sub,43,Private Sub CmdLast_Click()Adodc1.Recordset.MoveLast 移到末记录 CmdFirst.Enabled=True CmdPre.Enabled=True CmdNext.Enabled=False CmdLast.Enabled=FalseLabel6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&Adodc1.R

29、ecordset.RecordCountEnd Sub,44,Private Sub CmdN_Click()Dim n As Integern=Text6.TextAdodc1.Recordset.Move nLabel6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&Adodc1.Recordset.RecordCountEnd Sub,45,(2)AddNew 方法功能:用于向数据表中增加空记录。(3)Uptate方法功能:用来把添加的新记录或修改的记录保存到数据表中,该方法只能在AddNew方法被执行之后才能执行。,46,增加记录的操作

30、可分为以下3步:调用RecordSet 对象的AddNew 方法,增加一个空记录,语句格式如下:Adodc1.RecordSet.AddNew在数据绑定控件中输入记录值,或用代码给字段赋值,格式如下:Adodc1.RecordSet.Fields(“字段名”)=值调用Update 方法,将输入的新记录值保存到数据表中,语句格式如下:Adodc1.RecordSet.Update(4)Delete方法功能:删除当前记录。使用格式:Adodc1.RecordSet.Delete,47,例8-3 设计数据编辑窗体。,该窗体具有新增记录、删除记录、修改记录、取消修改等功能。当新增记录或修改记录时,只要

31、没有单击确定按钮,单击取消按钮,可以取消上述操作。在例8-2的基础上,增加以下功能按钮:添加(CmdAdd):执行记录集的AddNew方法删除(CmdDel):执行记录集的Delete方法确定(CmdOk):执行记录集的Update方法取消(CmdEsc):执行数据控件的Refresh方法,图8-17 例9-3运行界面,48,编写代码,Private Sub Form_Load()CmdFirst.Enabled=False 首记录按钮无效CmdPre.Enabled=False 前移按钮无效CmdNext.Enabled=True 后移按钮有效CmdLast.Enabled=True 末记录

32、按钮有效CmdAdd.Enabled=True 添加按钮有效CmdDel.Enabled=True 删除按钮有效CmdOk.Enabled=False 确定按钮无效CmdEsc.Enabled=False 取消按钮无效Label6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&Adodc1.Recordset.RecordCountEnd Sub,49,Private Sub CmdAdd_Click()添加按钮的单击事件Adodc1.Recordset.AddNewCmdAdd.Enabled=FalseCmdDel.Enabled=Fals

33、eCmdOk.Enabled=TrueCmdEsc.Enabled=TrueEnd SubPrivate Sub CmdOk_Click()单击确认按钮Adodc1.Recordset.UpdateCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseEnd Sub,50,Private Sub CmdDel_Click()单击删除按钮x=MsgBox(确实要删除当前记录吗?,vbYesNo+vbQuestion,确认)If x=vbYes Then Adodc1.Recordset.Delet

34、e Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End IfElse Adodc1.RefreshEnd IfEnd Sub,51,Private Sub CmdEsc_Click()取消按钮Adodc1.RefreshCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseEnd Sub,52,8.3 数据绑定控件的应用,8.3.1 数据绑定控件的概念数据绑定控件是数据显示控件,

35、只要将数据绑定控件绑定到ADO Data控件的Recordset对象中的某个字段上,就可以显示当前记录的该字段的值,并且可以接受用户对数据的修改。使用绑定控件的方法和步骤为:将绑定控件添加到窗体上,并调整大小和布局。设置控件的一般属性。设置控件的DataSource属性,即绑定到ADO Data控件。设置控件的DataField属性,即绑定到ADO Data控件的记录集对象(Recordset)的某个字段上。注意:数据绑定控件的DataSource属性在运行时是不可改的,所以不能在运行程序时通过代码设置该属性。,53,【例8.4】设计含有学生照片字段的学生信息编辑窗体。,在以前建立的学生信息表

36、中增加“照片”字段。每个学生的照片以图片文件形式存放在磁盘中,图片文件名及其所在的路径(位置)存放在学生信息表中的照片字段中,所以该字段的类型设为varchar型。本题采用Image显示照片,因为将Image控件的Stretch属性设为True,可以自动调整图片的大小以适应Image控件边框的大小。用Image或Picture控件显示图片的方法:Image1.Picture=LoadPicture(图片文件名)Picture1.Picture=LoadPicture(图片文件名),54,将该图片加载到Image1上,可执行如下语句:Image1.Picture=LoadPicture(d:lz

37、wphot face01.jpg)若要清空图象框,即Image1中不显示图片,可执行如下语句:Image1.Picture=LoadPicture()如果要将存放在数据表中“照片”字段的图片文件装载到Picture1上显示出来,可执行如下语句:Picture1.Picture=LoadPicture(Adodc1.RecordSet.Fields(照片),55,设计过程如下:,(1)设计界面如图8.18所示。,图8.18 例8.4的设计界面,增加了一个Image1,用于显示照片;增加“浏览”按钮,用于在录入照片时,显示“打开文件”对话框,以便用户选择图片文件;增加CommanDialog控件,

38、用于提供“打开文件”对话框。,56,(2)设置新增控件的属性如表所示。,57,(3)编写代码如下:,Private Sub Form_Load()CmdFirst.Enabled=False CmdPre.Enabled=False CmdNext.Enabled=TrueCmdLast.Enabled=True Adodc1.Recordset.MoveFirstCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseLabel6.Caption=记录:&Adodc1.Recordset.Abs

39、olutePosition&/_&Adodc1.Recordset.RecordCountImage1.Picture=LoadPicture(Adodc1.Recordset.Fields(照片)显示照片CmdFind.Visible=False 浏览 按钮不可见End Sub,58,单击“添加”按钮的代码,Private Sub CmdAdd_Click()Adodc1.Recordset.AddNewCmdAdd.Enabled=FalseCmdDel.Enabled=FalseCmdOk.Enabled=TrueCmdEsc.Enabled=TrueImage1.Picture=Loa

40、dPicture()清空图像框CmdFind.Visible=True 浏览按钮可见End Sub,59,单击浏览按钮的代码:,Private Sub CmdFind_Click()CDialog1.ShowOpen 显示“打开文件”对话框Adodc1.Recordset.Fields(照片)=CDialog1.FileName 选中的文件名送数据表中Image1.Picture=LoadPicture(Adodc1.Recordset.Fields(照片)显示照片End Sub,60,Private Sub CmdOk_Click()单击“确认”按钮的代码Adodc1.Recordset.U

41、pdateCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseCmdFind.Visible=FalseLabel6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&_ Adodc1.Recordset.RecordCountEnd Sub,61,Private Sub CmdFirst_Click()单击“首记录”按钮的代码Adodc1.Recordset.MoveFirst CmdFirst.Enabled=False CmdPre.Enab

42、led=False CmdNext.Enabled=True CmdLast.Enabled=True Image1.Picture=LoadPicture(Adodc1.Recordset.Fields(照片)Label6.Caption=记录:&Adodc1.Recordset.AbsolutePosition&/&Adodc1.Recordset.RecordCountEnd Sub,62,“删除”、“取消”按钮的单击事件过程代码与例8.3相同。其余移动记录指针的按钮单击事件过程代码与例8.3相比,都增加了显示照片的语句:Image1.Picture=LoadPicture(Adodc1

43、.Recordset.Fields(照片)运行程序,当单击各移动按钮时,学生记录改变,照片也随之改变。当单击“添加”按钮时,所有文本框及图像框清空,表示空记录,供用户输入新记录数据,此时“浏览”按钮可见,单击“浏览”按钮,出现“打开文件”对话框,用户可在其中选择图片文件,加载到图像框中,单击“确定”按钮,则新录入的数据及图片文件名保存到数据表中。,63,8.3.2 List 控件和Combo 控件的应用,在设计数据录入窗体时,有的字段数据取值范围很小,为了录入方便并且保证该字段数据的标准性,可以使用列表框或组合下拉列表框为用户提供可选的输入项。例如,将例8-3中的录入性别字段的文本框Text3

44、删除,改用Combo控件,控件的名称用默认名Combo1,并绑定到Adodc1(已连接到学生信息表)的性别字段,即设置Combo1的属性DataSource为:Adodc1 DataField为:性别。,64,在窗体的Form_Load()事件中,用Combo1的AddItem方法,将“男”、“女”两项添加到 Combo1中,代码如下:Private Sub Form_Load()Combo1.AddItem 男Combo1.AddItem 女End Sub运行界面如图所示。,图8-18 用Combo控件显示或输入性别字段,65,8.3.3 DataList控件和DataCombo控件的应用,

45、该两个控件属于ActiveX控件,不在标准工具箱中,需要添加到工具箱中。添加控件到工具箱中的方法如下:执行菜单工程部件命令,选中“Microsoft Data List Controls 6.0”,即可见DataList和DataCombo两个控件的图标出现在工具箱中。DataList和DataCombo控件的作用是在录入数据时,给用户提供输入选项列表。与List和Combo不同的是,DataList和DataCombo这两个控件中的选项字符串是通过其所绑定的数据表字段的内容自动添加的。,66,主要属性有:,DataSource:实际要录入的记录源的ADO Data控件名。DataField:

46、实际要录入数据的字段名。RowSource:用于生成控件列表信息的ADO Data控件名称。ListField:用于填充列表框的由RowSource指定的记录集中的字段名。BoundColumn:由RowSource指定记录集的实际要录入的字段名,该字段名是与DataSource相关联的字段(一般与DataField的相同)。控件的作用:借助于RowSource的ListField字段,为DataSource的DataField字段输入数据。,67,例8-5 设计课程信息表的编辑窗体,实现对课程信息表录入数据。,要求:对课程信息表进行录入时,输入“教师编号”时,借助“教师信息表”中的“姓名”字

47、段进行输入。即“教师编号”字段的输入控件采用DataCombo,其中列出的是现有教师的姓名,供用户选择录入,虽然表面看录入的是姓名,而实际录入课程信息表的是该教师的教师编号。,68,表8-5 教师信息表,表8-6 课程信息表,DataSource,DataField,RowSource,ListField,BoundColumn,69,(1)设计界面如图8-19所示(2)利用Adodc1的属性页,将Adodc1连接到数据源cjgl的课程信息表上;将Adodc2连接到数据源cjgl的教师信息表上。,图8-19 设计界面,70,连接完数据源的Adodc1和Adodc2的属性值结果如下表所示。,71

48、,设置DataCombo1控件的属性如下:DataSource Adodc1 DataField 教师编号 RowSource Adodc2 ListField 姓名 BoundColumn 教师编号如此设置DataCombo1的属性之后,运行界面如图8-20,可见DataCombo1控件中填充的各项是教师信息表的姓名字段的数据。但实际要录入到课程信息表的是教师编号字段。,图8-20 运行界面,72,(3)对各按钮编程如下:,Private Sub CmdAdd_Click()增加按钮单击事件Adodc1.Recordset.AddNewCmdAdd.Enabled=FalseCmdDel.E

49、nabled=FalseCmdOK.Enabled=TrueCmdCancel.Enabled=TrueEnd SubPrivate Sub CmdOK_Click()确定按钮单击事件Adodc1.Recordset.Update CmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOK.Enabled=FalseCmdCancel.Enabled=FalseEnd Sub,73,取消按钮单击事件Private Sub CmdCancel_Click()Adodc1.RefreshCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdO

50、K.Enabled=FalseCmdCancel.Enabled=FalseEnd Sub,74,Private Sub CmdDel_Click()单击删除按钮x=MsgBox(确实要删除当前记录吗?,vbYesNo+vbQuestion,确认)If x=vbYes Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End IfElse Adodc1.RefreshEnd IfEnd Sub,75,8.3.4 DataGri

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号