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新打开的图片替换原有的长二进制的图片。用什么代码,加在哪部分。
进来的朋友如果你也不会,也麻烦帮着顶一下,等有高手竖起来讲明白了,你不也就会了吗?
感谢感谢!!!
感谢感谢
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新打开的图片替换原有的长二进制的图片。用什么代码,加在哪部分。
进来的朋友如果你也不会,也麻烦帮着顶一下,等有高手竖起来讲明白了,你不也就会了吗?
感谢感谢!!!
感谢感谢
http://community.csdn.net/Expert/TopicView.asp?id=3786574
http://community.csdn.net/Expert/TopicView.asp?id=3786573
是俺啊!goodluck 2005 你总忙,我就差关键这一步了,你又没有时间我只好出此下策了。本来昨天想问你一下再贴来的,但是我真的急用啊。声名以上代码由“w3k(网络3K)”原创,本人只是引用一下子。对w3k(网络3K)表示感谢。
那个网址不是我的问题吗?
你可真行,这回怎么不先结帖子了,哈哈开个玩笑。
以后还望多多帮忙
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