VB 显示 ACCESS 数据库的里的图片
发布网友
发布时间:2022-04-12 17:47
我来回答
共3个回答
懂视网
时间:2022-04-12 22:08
access 数据库 支持OLE 对象 字段,其中最常用的是BMP 对象 ,即 图片 对象 。 图片 对象 的加入使Access 数据库 的可用性得到大大提高,它使 数据库 不仅仅局限于传统意义上的数据(即数值与字符),提高了信息的质量,并更接近于人们日常生活中的媒体。例如
access数据库支持OLE对象字段,其中最常用的是BMP对象,即图片对象。图片对象的加入使Access数据库的可用性得到大大提高,它使数据库不仅仅局限于传统意义上的数据(即数值与字符),提高了信息的质量,并更接近于人们日常生活中的媒体。例如,要作产品介绍,需要保存该产品的图片。图片往往具有比文字更大的说服力。
然而,直接采用VB等开发工具将Access数据库中的图片对象取出来显示到屏幕上并实现打印输出并不容易。这儿介绍一个简单方法,只用几行代码即可将图片对象显示到屏幕上,并支持图片的缩放,高质量的打印输出。这需要借助CELL组件。
下面举一个在VB中使用CELL组件显示Access数据库中的图片对象的例子。创建一个Form之后,将CELLActiveXControlmodule选中,就把CELL组件添加入控件栏中了,将CELL组件加入Form,在Form的Load过程中加入以下代码
PRivateSubForm_Load()
Cell1?DoOpenFileDbase0,″e: mpsample?mdb″,tables
Cell.1DoDumpDbaseData″Select*fromemployees″,0,0,0,1,cols,rows
EndSub
e: mpsample?mdb是一个含有图片的Access数据库,运行程序就可将其中的图片显示到表格中并打印出来(如下图)。根据SELECT语句的灵活性,你可以将指定的图片显示到表格的任意位置之上。采用CELL组件还有一个好处就是CELL组件强大的打印功能,CELL组件对图片进行无级缩放,使打印出来的图片不失真。->
热心网友
时间:2022-04-12 19:16
''这是调用文件,你自己改一改吧,图片存数据库是二进制型式
Public Function TemporaryFileName() As String '生成临时文件
Dim temp_path As String
Dim temp_file As String
Dim length As Long
temp_path = Space$(MAX_PATH)
length = GetTempPath(MAX_PATH, temp_path)
temp_path = Left$(temp_path, length)
temp_file = Space$(MAX_PATH)
GetTempFileName temp_path, "per", 0, temp_file
TemporaryFileName = Left$(temp_file, InStr(temp_file, Chr$(0)) - 1)
End Function
Public Sub DispPic(ByVal Person_no As String, ByVal PicObject As Object)
Dim bytes() As Byte
Dim file_name As String
Dim file_num As Integer
Dim file_length As Long
Dim num_blocks As Long
Dim left_over As Long
Dim block_num As Long
Screen.MousePointer = vbHourglass
DoEvents
'数据库自己改吧
Set rs = cn.Execute("SELECT * FROM ep_Picture WHERE e_no='" & _
Person_no & "'", , adCmdText)
If rs.EOF Then
Screen.MousePointer = vbDefault
Exit Sub
End If
'生成文件名
file_name = TemporaryFileName()
'打开临时文件写入数据
file_num = FreeFile
Open file_name For Binary As #file_num
file_length = rs!FileLength
num_blocks = file_length / BLOCK_SIZE
left_over = file_length Mod BLOCK_SIZE
For block_num = 1 To num_blocks
bytes() = rs!Picture.GetChunk(BLOCK_SIZE)
Put #file_num, , bytes()
Next block_num
If left_over > 0 Then
bytes() = rs!Picture.GetChunk(left_over)
Put #file_num, , bytes()
End If
Close #file_num
'返回图片控件
PicObject.Picture = LoadPicture(file_name)
Kill file_name
Screen.MousePointer = vbDefault
End Sub
Public Sub AddPic(ByVal person_name As String, ByVal FileName As String)
Dim file_num As String
Dim file_length As String
Dim bytes() As Byte
Dim num_blocks As Long
Dim left_over As Long
Dim block_num As Long
If Len(person_name) = 0 Then Exit Sub
file_num = FreeFile
Open FileName For Binary Access Read As #file_num
file_length = LOF(file_num)
If file_length > 0 Then
num_blocks = file_length / BLOCK_SIZE
left_over = file_length Mod BLOCK_SIZE
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "Select e_no, Picture, FileLength FROM ep_picture", cn
rs.AddNew
rs!e_no = person_name
rs!FileLength = file_length
ReDim bytes(BLOCK_SIZE)
For block_num = 1 To num_blocks
Get #file_num, , bytes()
rs!Picture.AppendChunk bytes()
Next block_num
If left_over > 0 Then
ReDim bytes(left_over)
Get #file_num, , bytes()
rs!Picture.AppendChunk bytes()
End If
rs.Update
Close #file_num
End If
End Sub
热心网友
时间:2022-04-12 20:34
去VBhao 看看 有相应的 开源程序。