关注。不用绑定的方法来处理sqlserver7中的图片字段好像不行啊!

解决方案 »

  1.   

    MSDN帮助里有,GetChunck方法下就有
      

  2.   

    我来看了看,lianghn,chenhw等谢谢你们,但msdn中的提示也参照了,不行.现在更惨,用绑定也不行了,应为scan出来的图片,绑都绑不上,loadpicture对scan出来的bmp图片报错,也不过2M而已,怎么办
      

  3.   

    lianghn,你好,我也试过正常图片绑定,是没有问题,但我在做一个关于原件备份的系统,扫描仪出来的图片,不知是格式的问题还是怎么回事,就是不行
      

  4.   

    一段精简的读写"大字段"的代码,使用 ADODB.Stream !
    http://www.csdn.net/expert/topic/112/112568.shtm
      

  5.   

    大概的意思,写的可能不全
    dim filename as string private sub command_click()
        ...
        rec.Open "tblmailfujian", Dbconn, adOpenDynamic, adLockOptimistic
        Dim i As Integer
        rec.AddNew
        SaveToDB rec!Data, filename
        rec.Update
        rec.Close
        ...
    end subprivate sub command2_click()
                ReadFromDB nrc
                Me.Image2.Picture = LoadPicture(FileName)
    end sub
    Private Sub SaveToDB(ByRef fld As ADODB.Field, DiskFile As String)
        Dim ByteData() As Byte '定义数据块数组
        Dim NumBlocks As Long '定义数据块个数
        Dim FLength As Long '标识文件长度
        Dim LeftOver As Long '定义剩余字节长度
        Dim SourceFile As Long '定义自由文件号
        Dim i As Long '定义循环变量
        
        SourceFile = FreeFile '提供一个尚未使用的文件号
        Open DiskFile For Binary Access Read As SourceFile '打开文件
        FLength = LOF(SourceFile) '得到文件长度
        
        If FLength = 0 Then '判断文件是否存在
            Close SourceFile
            MsgBox DiskFile & "无 内 容 或 不 存 在 !"
        Else
            NumBlocks = FLength / BLOCKSIZE '得到数据块的个数
            LeftOver = FLength Mod BLOCKSIZE '得到剩余字节数
            fld.Value = Null
            ReDim ByteData(BLOCKSIZE) '重新定义数据块的大小
            
            For i = 1 To NumBlocks
            Get SourceFile, , ByteData() ' 读到内存块中
            fld.AppendChunk ByteData() '写入FLD
            Next i
            
            ReDim ByteData(LeftOver) '重新定义数据块的大小
            Get SourceFile, , ByteData() '读到内存块中
            fld.AppendChunk ByteData() '写入FLD
            Close SourceFile '关闭源文件
        End IfPrivate Sub ReadFromDB(ByRef fld As ADODB.Field, ii As String)
        Dim Chunk() As Byte
        Dim DataFile As Integer, Fl As Long
        Dim NumBlocks As Long
        Dim LeftOver As Long
        Dim i As Integer
        Const ChunkSize = 16384 '每次读写块的大小
        
        DataFile = 1
        Open ii For Binary Access Write As DataFile
        Fl = fld.ActualSize
        If Fl = 0 Then
           Close DataFile
        Else
            NumBlocks = Fl / ChunkSize
            
            For i = 1 To NumBlocks - 1
            ReDim Chunk(ChunkSize)
            Chunk() = fld.GetChunk(ChunkSize)
            Put DataFile, , Chunk()
            Next i
            
            LeftOver = Fl Mod ChunkSize
            ReDim Chunk(LeftOver)
            Chunk() = fld.GetChunk(LeftOver)
            Put DataFile, , Chunk()
            Close DataFile
        End If
    End Sub