当前位置:编程学习 > VB >>

从数据库字段中读取图片至表格控件中

小弟用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 ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,