1、用 VB6.0 的 Data 控件存取数据库图片的新方法摘要:介绍了 VB6 中 Data 控件建立数据库的方法以及如何使用独特的方法实现对图像数据的显示和查询。关键词:Data 控件; 数据库; 图像数据1 建立 Access 关系型数据库:随着计算机技术的发展,数据库越来越显示出其强大的数据存储和数据管理功能。为了满足人们对数据库的需要,Visual Basic 提供了强大的数据库的程序设计功能。虽然 VB 并不是专用与数据库开发的软件系统,但它所提供的数据库功能却几乎可以满足所有编程人员的需求。在 Visual Basic 环境下,Access 数据库是缺省数据库,Access 所采用的
2、 Jet 数据库引擎得到了最有效的利用。例如 Visual Basic 的内部数据访问控件(Data)就是建立在 Jet引擎基础上的。数据库是一组特定数据的集合,是提供数据的基地。它能保存数据并允许用户访问所需的数据。数据库保存的数据都是相关数据,为了便于保管和处理这些数据,将这些数据 存入数据库时必须具有一定的数据结构和文件组织方式。数据库中的数据集合组成特定的表,表中的每一列为一个字段,每一行为一个记 录。其中表是按行与列排列来表示相关信 息的逻辑组。Jet 数据库引擎包含在一组动态链接库(DLL)中,运行时,这些动态链接库文件被链接到Vis ual Basic 程序。它把应用程序的请求翻
3、译成对.mdb 文件或其他数 据库的物理操作。数据库引擎真正读取、写入和修改数据库,并处理数据库中所有内部事物。在 Access 数据库系统中,信息以数据库为单位存储到存储介质如磁盘、光盘中。其扩展名为 mdb。2 Data 控件2.1 Data 控件的内涵Data 控件是 Visual Basic 和数据库之间的联接桥梁。通过 Data 控件可以不用编写代码而创建简单的数据库,存取数据。此外,也可把 Data 控件和 Visual Basic 代码结合起来创建完整功能的应用程序,为数据处理提供高级的编程控制。在不用代码的情况下 Data 控件能够完成下列任务(1)与本地或远程数据库连接(2)
4、打开指定的数据库表或定义记录集。(3)传送数据字段到各种数据绑定控件,并可在其中显示或改变数据字段的值。 (4)通过数据绑定控件来添加新记录或更新数据库(5)捕获访问数据时出现 的错误(6)关闭数据库要使用 Data 控件,至少得设置 DatabaseName 属性和 RecoredSource 属性。一旦设置了DatabaseName 属性, Visual Basic 将检索数据库里的所有表和有效查询的名称,并根据DatabaseName 把它们显示在一个下拉列表里。若想打开外部的数据库,还必须在“属性” 窗口设置 Connect 属性。DatabaseName 属性用于返回或设置 Data
5、 控件的数据源的名称及位置,指定所要用的数据库。RecoredSource 属性用于指定控件能看到的数据库部分,即指定通过窗体上被绑定的控件所访问记录的来源。只有在设置了 DatabaseName 属性后才能设置RecoredSource 属性。当在运行时改变 RecoredSource 属性的值,必须使用 Refresh 方法使改变生效,并重建 Recoredset。2.2 数据绑定控件数据绑定控件是用于访问数据库信息的数据识别控件。当创建一个 Data 控件后,通过设定相应的属性,把数据绑定控件与 Data 控件联系起来,就可以在数据绑定控件中显示数据库中相应记录的字段值,同时还可对这些数
6、值进行更改。在绑定控件里改变的数据,当移动另一个记录时,这些改变会自动地写入到数据库中。2.3 数据绑定控件的属性1. DataField 属性用于指定 Data 控件所建立的记录集里字段的名称2. DataSource 属性用于指定 Data 控件所要绑定的数据控件,通过这个控件将当前控件连接到数据库上。该属性在运行时不可用。如果要在运行时将一个控件连结到数据库中的某个字段上,必须在设计时用 DataSource 属性指定一个 Data 控件。2.4 添加数据绑定控件要在窗体中添加数据绑定控件,首先应在窗体中创建绑定控件,然后设置该控件的DataSource 属性和 DataField 属性
7、,指定要绑定的 Data 控件和记录集里的有效字段。如果设计时数据库可用,则有效字段的列表将显示在“属性”窗口里的“DataField 属性设置”框中。如果在设计时数据库不可用,则在数据值从数据库中发送给控件之前,需在运行时提供一个有效的字段名称。3 应用实例笔者使用 Data 控件及数据绑定控件创建一个学生档案数据库查询系统。首先在 VB6 通过外接程序将其调用 Access2000,创建一个学生档案数据库及学生档案数据表。但是这里需要提醒 的是“PictureBox”和“ImageList”都不能接收来自“Data”控件的信息,因此可在图片框的内部放置一个不可见但是有效的“Label” 控
8、件,让其接收文本类型的路径信息:待用“Loadpicture()”函数装载图像时,参数用 “LabelX.Caption”代替即可。其步骤如下:3.1 创建数据库及空数据表1. 启动 VB6,直接进入 VB6 的开发界面,在主界面添加Text1Text5,label1label6,image1,command1command4,Data1,见图 3.2. 调用外接程序,由于 Visual Data Manager 并非 VB6 的标准成员,必须通过外接程序将其调用。启动 Visual Data Manager。3. 单击 Visual Data Manager 的“文件”菜单,选择“文件 新建
9、Microsoft Access“Version 7.0 mdb”菜单项,创建一个 Access 数据库。4. 在随后弹出的 “保存”对话框中,为刚刚创建的数据库取名为 Student,此时创建的仅仅是一个空的数据库,还要在 其中加入数据表,并在表中添加所需的字段完成创建空数据表的工作。右击“数据库窗口” ,在弹 出的快捷菜单中选择“新建表”项,启动“表结构”窗口,进行数据表的创建工作。并在窗口上方的“表名称”栏中为该表取名 Stude ntList,单击“添加字段”按钮,为该表添加所需的字段才能完成创建空数据 表的工作。根据系统设计要求,在表中添加“姓名” 、 “电话”、 “手机”、 “传呼
10、”、 “地址”、 “图像路径”六个字段,依次选取的数据类型是字符型、整型、字符型、字符型、字符型、字符型。5. 完成字段的添加工作后,单击“ 生成表”按钮,Visual Data Manager 弹出对话框是否要为这个数据库创建一个关键字段,由于关键字段只有在多个数据表的情况下会发挥作用,因此选择“否”。6. 数据库及其空数据表的创建工作完毕,回到“数据库窗口”, 可以发现数据库属性的下方多了一个名为“StudentList” 数据库表。7. 在数据表中填写数据右击“数据库窗口” 中的“StudentList”数据表,在弹出的快捷菜单中选择“打开”选项,将刚刚创建的空数据表打开,此时的数据表是
11、空的,单击当前窗口中的“添加”菜单,启动添加数据的窗口,按照事先设计的数据类型,在该窗口依次添加第一个学生的“姓名”, “电话”, “手机”, “传呼”, “地址”, “图像路径 ”等选项,添加完毕,单击“刷新”按钮,则第一个学生的各项信息被综合成一个记录,添加到“StudentList”数据库表当中。重复上述步骤,依次将要建立的学生档案资料添加到 StudentList 数据库表当中。见图 1。图 1 Studen tList 数 据表3.2 创建数据库程序的基本框架Data 控件按照用户提 交的要求,通过 Microsoft Jet 数据引擎从“StudentList”数据库中提取相应的数
12、据记录,这一记录的不同字段传送给了不同的数据绑定控件。文本框类数据绑定控件显示的是文件的“姓名” , “电话”等文本信息, “Data”控件传送过来的字段也正好是文本类型,只需简单传送即可;而“图片框”显示的是图像数据本身,因此在“Data” 控件将一个包含文件路径信息的字段传递过来后,必须使用一个 LoadPicture()函数将相应的图像显示出来。其流 程框架见图 2。图 2 程序的流程框架1. 设置各个基本控件的外观属性Data 控件:设置 DataSource 属性选项,设置为 Student;设置 RecorderSource 为StudentList.单击 Form1 窗口中的 T
13、ext1 控件,在属性窗口找到其“DataSource 属性选项” ,设置为 Data1 控件,表示该控件的数据是通过 “Data1” 控件从Student 数据库中取得的,继续找到该控件的“DataField”属性选项,设置为“姓名”,表示该控件仅显示被选中记录的“姓名”字段。用同样的方法对 Text2 控件Text5 控件进行绑定。2. 选中添加在 Image1 控件内部的 Label6 控件,在“Visible”项属性中将其设置成不可见的,通过 “Data”控件与“StudentList”数据库表中的“图像路径”字段对它进行绑定。同时,将装载该控件的“Image1”的“Stretch”项属性设置为“True” 。编写代码来实现图像的显示:Private Sub Data1_Validate(Action As Integer, Save As Integer)strtemp = label5.CaptionImage1.Picture = Laodpicture(strtemp)End Sub图 3 程序开发界面图 4 学生档案界面程序运行结果如图 4。4 结束语在建立数据库时,常常需要显示与数据有关的图像信息,但编程者常常使用非常复杂的方法,笔者在这里介绍的方法简洁而明了,仅仅做到抛砖引玉的作用。