从数据库字段中读取图片至表格控件中
小弟用VB时间不长,要做款管理软件,遇到个问题:要将数据库字段中存放的图片数据读出后, 再显示至表格上:
1.VB自带的表格控件好象都不支持图片;
2.读出的图片数据是二进制的,能不能直接就放进表格,这样就不用存成临时文件了.
有没有什么解决办法? --------------------编程问答-------------------- 1、vb的MSHFlexGrid的单元格支持图片,需要在部件里添加控件。
2、二进制图片数据当然不能直接放进表,不过可以内存中转换成图片对象,再赋给MSHFlexGrid的单元格。 --------------------编程问答-------------------- 1、vb的MSHFlexGrid的单元格支持图片,需要在部件里添加控件。
2、二进制图片数据当然不能直接放进表,不过可以内存中转换成图片对象,再赋给MSHFlexGrid的单元格。 --------------------编程问答-------------------- 谢谢楼上的解答.
1.我先看看如何向MSHFlexGrid添加图片,是不是需要ImageList支持/
2.不知道通过内存转成图片对象难不难,以前一直先保存成文件再调用加载.
非常感谢 --------------------编程问答-------------------- 以前毕业设计的时候搞过一次,搞不出来。
放弃了,后来,数据库里只存文件名,文件存在windows下。
从windows里取。 --------------------编程问答-------------------- 您好,滴答表格控件可以支持直接放上图片数据流.
顺便贴上代码,参考如何读取数据库字段中二进制数据,
Dim aryChunk() As Byte
Dim rs As New Recordset '新建记录集对象
'设置链接属性
rs.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Northwind.mdb;Persist Security Info=False"
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
rs.CursorType = adOpenStatic
rs.Source = "select LastName+ FirstName as Name , Photo from [Employees] "
rs.Open '打开记录集
DiDaSG1.RowSetCount rs.RecordCount + 1
Dim nRow As Long
nRow = 1
rs.MoveFirst
While Not rs.EOF
DiDaSG1.CellSetValue nRow, 1, rs.Fields("name")
'********************加载数据流****************************'
Dim nStreamSize As Long
nStreamSize = rs.Fields("photo").ActualSize '得到数据流的大小
If nStreamSize > 0 Then
ReDim aryChunk(nStreamSize - 1) As Byte '声明二进制数据空间
aryChunk = rs.Fields("photo").GetChunk(nStreamSize) '得到二进制数据
Dim nImgIndex As Long
nImgIndex = DiDaSG1.GridAddImageEx(aryChunk, nStreamSize) '添加图片流 DiDaSG1.CellSetImage nRow, 2, nImgIndex '设置图片
End If
'************************************************************'
nRow = nRow + 1
rs.MoveNext
Wend
rs.Close '关闭
Set rs = Nothing '释放
''展开图片,使之显示实际大小
DiDaSG1.GridAutoSizeRows '自适应所有行
DiDaSG1.GridAutoSizeCol 2 '适应图片列
具体示例下载地址:www.jjcsoft.com.cn/download/didasg_setup.rar
--------------------编程问答--------------------
将图片以二进制数据存储到数据库,将使数据库查询变得很慢。
我更喜欢在数据库中记录图片的路径和文件名,将所有图片放到某一文件夹。
--------------------编程问答-------------------- 滴答表格啊,听说过,不过好象是要收费的.
先看看自带的OCX能不能解决,不能解决如果公司肯出钱的话,就考虑买一套.
补充:VB , 数据库(包含打印,安装,报表)