Const ChunkSize As Long = 100
Const BlockSize As Long = 100
Const TempFile As String = "tempfile.tmp" 
Dim byteData() As Byte
Dim DiskFile As String
Dim NumBlocks As Long  
Dim FileLength As Long
Dim LeftOver As Long   
Dim SourceFile As Long 
Dim byteChunk() As Byte
Dim i As Long Public Sub showImage(Image1 As Image, Adodc1 As Recordset) 
  Erase byteChunk()
  FieldSize = Adodc1.Fields("photo").ActualSize
  If FieldSize = 0 Then
  Exit Sub
  End If
  SourceFile = FreeFile
    Open TempFile For Binary Access Write As SourceFile
    NumBlocks = FieldSize \ BlockSize
  LeftOver = FieldSize Mod BlockSize  
  If LeftOver <> 0 Then
    ReDim byteChunk(LeftOver)
    byteChunk() = Adodc1.Fields("photo").GetChunk(LeftOver)
    Put SourceFile, , byteChunk()
  End If
  For i = 1 To NumBlocks
    ReDim byteChunk(BlockSize)
    byteChunk() = Adodc1.Fields("photo").GetChunk(BlockSize)
    Put SourceFile, , byteChunk()
  Next i
  Close SourceFile
    Image1.Picture = LoadPicture(TempFile)
   Kill (TempFile)
End SubPublic Sub SaveImage(ByVal ImageFile As String, Adodc1 As Recordset)
  
 ' If Adodc1.Recordset.BOF = True Or Adodc1.Recordset.EOF = True Then
  '  Exit Sub
  'End If
  If ImageFile = "" Then
    Adodc1.Fields("photo").AppendChunk ""
  Else
    SourceFile = FreeFile
   Open ImageFile For Binary Access Read As SourceFile
    FileLength = LOF(SourceFile)
   If FileLength = 0 Then
    Close SourceFile
    MsgBox DiskFile & "无内容或不存在!"
  Else
    NumBlocks = FileLength \ BlockSize
    LeftOver = FileLength Mod BlockSize 
    Adodc1.Fields("photo").value = Null  
    ReDim byteData(BlockSize) 
    For i = 1 To NumBlocks
      Get SourceFile, , byteData() 
      Adodc1.Fields("photo").AppendChunk byteData()  '写入FLD
    Next i
    ReDim byteData(LeftOver) 
    Get SourceFile, , byteData() 
    Adodc1.Fields("photo").AppendChunk byteData()  '写入FLD
    Close SourceFile 
  End If
 End If
End Sub
Public Sub delImage(ByVal txtsql As String, Image1 As Image) 
 Dim mrc As Recordset '以及ADO2.6对象
 Set mrc = ExecuteSQL(txtsql)
  mrc.Fields("photo").AppendChunk ""
  mrc.update
  Image1.Picture = LoadPicture("")
  mrc.Close
  Set mrc = Nothing
End Sub
Private Sub Delete_Click()
 If vbYes = MsgBox("确实要删除记录吗?", vbYesNo, "提示信息") Then
Adodc1.Recordset.Delete
End IfEnd SubPrivate Sub cmdSelectPhoto_Click()
    With CommonDialog1
.Filter = "所有图形文件|*.bmp;*.dib;*.gif;*.jpg;*.ico|位图文件(*.bmp;*.dib)|*.bmp;*.dib|GIF文件(*.gif)|*.gif|JPEG文件(*.jpg)|*.jpg|图标文件(*.ico)|*.ico"
.ShowOpen
End With
DiskFile = CommonDialog1.FileName
Image1.Picture = LoadPicture(DiskFile)
End SubPrivate Sub cmdAdd_Click()
Adodc1.Recordset.AddNewEnd SubPrivate Sub update_Click()Call SaveImage(DiskFile, Adodc1.Recordset)
DiskFile = ""
End Sub假定我的这条记录本身有图片,我想用CommonDialog新打开的图片替换原有的长二进制的图片。用什么代码,加在哪部分。
进来的朋友如果你也不会,也麻烦帮着顶一下,等有高手竖起来讲明白了,你不也就会了吗?
感谢感谢!!!
感谢感谢

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView.asp?id=3804716
    http://community.csdn.net/Expert/TopicView.asp?id=3786574
    http://community.csdn.net/Expert/TopicView.asp?id=3786573
      

  2.   

    w3k(网络3K) 
    是俺啊!goodluck 2005 你总忙,我就差关键这一步了,你又没有时间我只好出此下策了。本来昨天想问你一下再贴来的,但是我真的急用啊。声名以上代码由“w3k(网络3K)”原创,本人只是引用一下子。对w3k(网络3K)表示感谢。
      

  3.   

    w3k(网络3K)
    那个网址不是我的问题吗?
    你可真行,这回怎么不先结帖子了,哈哈开个玩笑。
    以后还望多多帮忙
      

  4.   

    Const ChunkSize As Long = 100
    Const BlockSize As Long = 100
    Const TempFile As String = "tempfile.tmp" 
    Dim byteData() As Byte
    Dim DiskFile As String
    Dim NumBlocks As Long  
    Dim FileLength As Long
    Dim LeftOver As Long   
    Dim SourceFile As Long 
    Dim byteChunk() As Byte
    Dim i As Long Public Sub showImage(Image1 As Image, Adodc1 As Recordset) 
      Erase byteChunk()
      FieldSize = Adodc1.Fields("photo").ActualSize
      If FieldSize = 0 Then
      Exit Sub
      End If
      SourceFile = FreeFile
        Open TempFile For Binary Access Write As SourceFile
        NumBlocks = FieldSize \ BlockSize
      LeftOver = FieldSize Mod BlockSize  
      If LeftOver <> 0 Then
        ReDim byteChunk(LeftOver)
        byteChunk() = Adodc1.Fields("photo").GetChunk(LeftOver)
        Put SourceFile, , byteChunk()
      End If
      For i = 1 To NumBlocks
        ReDim byteChunk(BlockSize)
        byteChunk() = Adodc1.Fields("photo").GetChunk(BlockSize)
        Put SourceFile, , byteChunk()
      Next i
      Close SourceFile
        Image1.Picture = LoadPicture(TempFile)
       Kill (TempFile)
    End SubPublic Sub SaveImage(ByVal ImageFile As String, Adodc1 As Recordset)
      
     ' If Adodc1.Recordset.BOF = True Or Adodc1.Recordset.EOF = True Then
      '  Exit Sub
      'End If
      If ImageFile = "" Then
        Adodc1.Fields("photo").AppendChunk ""
      Else
        SourceFile = FreeFile
       Open ImageFile For Binary Access Read As SourceFile
        FileLength = LOF(SourceFile)
       If FileLength = 0 Then
        Close SourceFile
        MsgBox DiskFile & "无内容或不存在!"
      Else
        NumBlocks = FileLength \ BlockSize
        LeftOver = FileLength Mod BlockSize 
        Adodc1.Fields("photo").value = Null  
        ReDim byteData(BlockSize) 
        For i = 1 To NumBlocks
          Get SourceFile, , byteData() 
          Adodc1.Fields("photo").AppendChunk byteData()  '写入FLD
        Next i
        ReDim byteData(LeftOver) 
        Get SourceFile, , byteData() 
        Adodc1.Fields("photo").AppendChunk byteData()  '写入FLD
        Close SourceFile 
      End If
     End If
    End Sub
    Public Sub delImage(ByVal txtsql As String, Image1 As Image) 
     Dim mrc As Recordset '以及ADO2.6对象
     Set mrc = ExecuteSQL(txtsql)
      mrc.Fields("photo").AppendChunk ""
      mrc.update
      Image1.Picture = LoadPicture("")
      mrc.Close
      Set mrc = Nothing
    End Sub
    Private Sub Delete_Click()
     If vbYes = MsgBox("确实要删除记录吗?", vbYesNo, "提示信息") Then
    Adodc1.Recordset.Delete
    End IfEnd SubPrivate Sub cmdSelectPhoto_Click()
        With CommonDialog1
    .Filter = "所有图形文件|*.bmp;*.dib;*.gif;*.jpg;*.ico|位图文件(*.bmp;*.dib)|*.bmp;*.dib|GIF文件(*.gif)|*.gif|JPEG文件(*.jpg)|*.jpg|图标文件(*.ico)|*.ico"
    .ShowOpen
    End With
    //修改
    DiskFile = CommonDialog1.FileName
    call SaveImage(DiskFile,Adodc1)
    call ShowImage(Image1,Adodc1)End SubPrivate Sub cmdAdd_Click()
    Adodc1.Recordset.AddNewEnd SubPrivate Sub update_Click()Call SaveImage(DiskFile, Adodc1.Recordset)
    DiskFile = ""
    End Sub