张园园
(山西省大同市大同煤炭职业技术学院,山西大同037003)
我们在设计某些信息管理系统时经常遇到需要处理图片的情况。如图1所示的一个学生信息管理系统的界面中,我们希望把每名学生的照片放在窗体上,使界面更加生动、信息更加全面。同样,在进行报名信息管理时,我们也希望在界面上能看到考生的照片,方便考生进行信息核对。诸如此类图片的处理一直都是比较复杂的,尤其是对于初学者。
图1 学生管理
在数据库中,图片的特殊性有两点:1、图片所占存储空间常常是比较大的;2、图片的处理常常需要外部的程序。编写代码对于初学者有一定难度。
我们常用ACCESS来设计一般的小型数据库。在ACCESS中,备注数据类型可以存储最多65,535个字符,而OLE对象数据类型可以存储最多1 G字节的链接或嵌入的对象(例如Microsoft Excel电子表格、Microsoft Word文档、图形、声音或其它二进制数据)。因为图片的大小常超出备注数据类型的限制,且用OLE类型更方便,所以我们利用ACCESS数据库中的OLE数据类型存储图片,在VB程序中用OLE控件处理图片。但是由于OLE对象不能支持ADO和OLEDB,我们要用DAO来连接数据,处理起来不方便。
下面介绍一种在VB程序中处理ACCESS数据库中处理图片的办法。准确地说图片没有真正放在ACCESS数据库,巧妙在于笔者是把图片文件的文件名以字符型数据存放在数据库中。同样可以实现如图1所示添加记录中的图片,还可以更改原有照片。
VB前台用户界面与后台数据库的连接采用方便、灵活、性能更优的ADO控件。
具体方法如下:
在设计数据库时除如图2所示的平常字段外,还需添加名称为“zaop”的字段来存放图片文件名的信息。字段的类型用文本型。这是问题的关键,“zaop”的字段必需为文本型,而不是OLE对象。
图2 学生表
第一步:加入部件
在“工程”菜单的“部件”选项卡的“控件”列表中找到Microsoft ADO Data Control 6.0,单击左端的复选框,使之显示对号√,然后单击“确定”钮,完成添加。同时在工具箱可见ADO控件。
第二步:添加控件、改变属性
为窗体添加ADO控件,默认名称为Adodc1。并连接数据库文件和表。
这里要注意的是:如图3所示,连接到数据库后要删除数据库前面的路径,只留下数据库文件名。而且数据库文件要与工程文件放在同一目录中。
图3 连接数据库
第三步:将窗体上有关的文本框绑定到ADODC控件上
对除命令按钮和图像框的其它对象设置如下两个属性值:
DataSource:数据源就是ADODC控件;
Datafield:数据字段就是表的字段,此处选择你该使用的字段。
第四步:在代码中使用ADODC控件对象的属性和方法
主要是调动其Recordset记录集对象的属性、方法等来实现按钮的功能。这里要讨论的是“添加或更换照片”这个按钮功能的实现,其它的不再赘述。
(1)首先在窗体上需要添加一个通用对话框:“MicroSoft Common Dialog Control 6.0”。
(2)编写“添加或更换照片”按钮的功能,这是本程序的最关键的地方,代码如下:
lj=App.Path'对工程所在路径赋值给变量
Cd2.ShowOpen'通用对话框执行打开方法选取准备添加或更改的图片文件
ff=Cd2.FileName'把上面通用对话框所选取的图片文件保存在变量中,注意此时保存的文件的绝对路径
zaopian=Mid(ff,Len(App.Path)+2,Len(ff)-Len(App.Path))'利用函数截取所选取的图片文件的文件名部分
student.Recordset.Fields("zaop").Value=zaopian'把图片文件名写入到数据库存放图片字段名的字段zaop中
student.Recordset.Update
ChDrive App.Path'设当前驱动器为工程所在驱动器
ChDir App.Path'设当前目录为工程所在目录
Image1.Picture=LoadPicture(zaopian)
(3)在浏览数据库的记录的各按钮上实现照片的显示功能,以“下一条”按钮为例,代码如下:
在设计程序时可以把所有学生的照片文件存放在工程所在目录的一个子目录中如“PIC”,这样管理起来比较方便。以上是笔者对数据库中的图片处理摸索的另一种途径,希望能对有需要的VB的初学者以及本课程的教师有所帮助。