Private Sub ReadPicFromRs() Dim sql As String Dim Chunk() As Byte Const ChunkSize As Integer = 2384 Dim DataFile As Integer, Chunks, Fragment As Integer Dim MediaTemp As String Dim lngTotalSize As Long, lngOffset As Long Dim ID As Integer Dim i As Integer
Set adors = New ADODB.Recordset sql = "select * from aaemployee where lzdate is null and dept='" & CmbDept.Tag & "' and name like '" & LstPerson.Text & "%' order by dept, code" ' where code='" & ID & "'" adors.Open sql, MLcon.adoSqlCon, adOpenDynamic, adLockOptimistic If adors.RecordCount = 0 Then Exit Sub 'Read picData to controls from adors MediaTemp = App.Path & "\files\picturetemp.tmp" DataFile = 1 Open MediaTemp For Binary Access Write As DataFile lngTotalSize = adors!Photo.ActualSize Chunks = lngTotalSize \ ChunkSize Fragment = lngTotalSize Mod ChunkSize ReDim Chunk(Fragment) Chunk() = adors!Photo.GetChunk(Fragment) Put DataFile, , Chunk() For i = 1 To Chunks ReDim Chunk(ChunkSize) Chunk() = adors!Photo.GetChunk(ChunkSize) Put DataFile, , Chunk() Next i Close DataFile
If MediaTemp = "" Then Exit Sub Img.Picture = LoadPicture(MediaTemp) End SubPrivate Sub WritePicToRs() Dim DataFile As Integer, strPathPicture As String, FileLen As Long Dim Chunk() As Byte, Chunks, Fragment As Integer, i As Integer Const ChunkSize As Integer = 2384adors.AddNew DataFile = 1 Open strPathPicture For Binary Access Read As DataFile FileLen = LOF(DataFile) If FileLen = 0 Then: Close DataFile: adors.Close: Exit Sub Chunks = FileLen \ ChunkSize Fragment = FileLen Mod ChunkSize ReDim Chunk(Fragment) Get DataFile, , Chunk() adors!MyPhoto.AppendChunk Chunk() ReDim Chunk(ChunkSize) For i = 1 To Chunks Get DataFile, , Chunk() adors!MyPhoto.AppendChunk Chunk() Next i Close DataFile End Sub
引用部件Microsoft ActiveX Data Objects *.* Libarary Dim mycon As New ADODB.Connection Dim myrest As New ADODB.Recordset mycon.CursorLocation = adUseClient mycon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\evershow.mdb;" mycon.Open myrest.Open "evershowauto", mycon, adOpenDynamic, adLockOptimistic If Not IsNull(myrest.Fields("图示")) Then '从数据库中读出图片 Set StmPic = New ADODB.Stream StrPicTemp = App.Path & "\temp.jpg" '临时文件,用来保存读出的图片 With StmPic .Type = adTypeBinary .Open '打开 .Write myrest.Fields("图示") '写入数据库中的二进制文件 .SaveToFile StrPicTemp, adSaveCreateOverWrite .Close End With Image1.Picture = LoadPicture(StrPicTemp) '载入临时文件中的图像 Else Image1.Picture = LoadPicture() End If
上面的是显示图片这里的是添加图片 工程引用microsoft activex data objects 2.5 library (一定要2.5版以上) 添加部件CommonDialog部件 通过IMAGE控件向ACCESS中添加图片 Dim picpath As String '声明图片路径存储变量 Dim mycon As New ADODB.Connection Dim myrest As New ADODB.Recordset mycon.CursorLocation = adUseClient mycon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\evershow.mdb;" mycon.Open Private Sub cmdpicadd_Click() '获取图片路径 cmdal.Flags = cdlOFNFileMustExist cmdal.Filter = "*.bmp|*.bmp|*.jpg|*.jpg|*.gif|*.gif" cmdal.FilterIndex = 3 cmdal.ShowOpen Image1.Picture = LoadPicture(cmdal.FileName) picpath = cmdal.FileName End Sub Private Sub Command1_Click() '移除图片 Image1.Picture = LoadPicture() End Sub Private Sub Command7_Click() '添加图片 Set mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Open mstream.LoadFromFile picpath Adodc1.Recordset.Fields("图示").Value = mstream.Read Adodc1.Recordset.Update End Sub
定义一个DataSet,然后把图片控件绑定到DataSet上.你看可以不?
Private Sub ReadPicFromRs()
Dim sql As String
Dim Chunk() As Byte
Const ChunkSize As Integer = 2384
Dim DataFile As Integer, Chunks, Fragment As Integer
Dim MediaTemp As String
Dim lngTotalSize As Long, lngOffset As Long
Dim ID As Integer
Dim i As Integer
Set adors = New ADODB.Recordset
sql = "select * from aaemployee where lzdate is null and dept='" & CmbDept.Tag & "' and name like '" & LstPerson.Text & "%' order by dept, code" ' where code='" & ID & "'"
adors.Open sql, MLcon.adoSqlCon, adOpenDynamic, adLockOptimistic
If adors.RecordCount = 0 Then Exit Sub
'Read picData to controls from adors
MediaTemp = App.Path & "\files\picturetemp.tmp"
DataFile = 1
Open MediaTemp For Binary Access Write As DataFile
lngTotalSize = adors!Photo.ActualSize
Chunks = lngTotalSize \ ChunkSize
Fragment = lngTotalSize Mod ChunkSize
ReDim Chunk(Fragment)
Chunk() = adors!Photo.GetChunk(Fragment)
Put DataFile, , Chunk()
For i = 1 To Chunks
ReDim Chunk(ChunkSize)
Chunk() = adors!Photo.GetChunk(ChunkSize)
Put DataFile, , Chunk()
Next i
Close DataFile
If MediaTemp = "" Then Exit Sub
Img.Picture = LoadPicture(MediaTemp)
End SubPrivate Sub WritePicToRs()
Dim DataFile As Integer, strPathPicture As String, FileLen As Long
Dim Chunk() As Byte, Chunks, Fragment As Integer, i As Integer
Const ChunkSize As Integer = 2384adors.AddNew
DataFile = 1
Open strPathPicture For Binary Access Read As DataFile
FileLen = LOF(DataFile)
If FileLen = 0 Then: Close DataFile: adors.Close: Exit Sub
Chunks = FileLen \ ChunkSize
Fragment = FileLen Mod ChunkSize
ReDim Chunk(Fragment)
Get DataFile, , Chunk()
adors!MyPhoto.AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get DataFile, , Chunk()
adors!MyPhoto.AppendChunk Chunk()
Next i
Close DataFile
End Sub
至于access,由于我的图基本都比较大,所以从一开始就没有考虑access,但我想道理或许是一样的吧,
http://topic.csdn.net/t/20020415/16/648581.html
http://topic.csdn.net/u/20080520/10/8c9e603f-b432-469f-a917-adb3a8b68180.html
应该还有很多这方面的介绍吧试试看
Dim myrest As New ADODB.Recordset
mycon.CursorLocation = adUseClient
mycon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\evershow.mdb;"
mycon.Open
myrest.Open "evershowauto", mycon, adOpenDynamic, adLockOptimistic If Not IsNull(myrest.Fields("图示")) Then '从数据库中读出图片
Set StmPic = New ADODB.Stream
StrPicTemp = App.Path & "\temp.jpg" '临时文件,用来保存读出的图片
With StmPic
.Type = adTypeBinary
.Open '打开
.Write myrest.Fields("图示") '写入数据库中的二进制文件
.SaveToFile StrPicTemp, adSaveCreateOverWrite
.Close
End With
Image1.Picture = LoadPicture(StrPicTemp) '载入临时文件中的图像
Else
Image1.Picture = LoadPicture()
End If
工程引用microsoft activex data objects 2.5 library (一定要2.5版以上)
添加部件CommonDialog部件 通过IMAGE控件向ACCESS中添加图片
Dim picpath As String '声明图片路径存储变量
Dim mycon As New ADODB.Connection
Dim myrest As New ADODB.Recordset
mycon.CursorLocation = adUseClient
mycon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\evershow.mdb;"
mycon.Open
Private Sub cmdpicadd_Click() '获取图片路径
cmdal.Flags = cdlOFNFileMustExist
cmdal.Filter = "*.bmp|*.bmp|*.jpg|*.jpg|*.gif|*.gif"
cmdal.FilterIndex = 3
cmdal.ShowOpen
Image1.Picture = LoadPicture(cmdal.FileName)
picpath = cmdal.FileName
End Sub Private Sub Command1_Click() '移除图片
Image1.Picture = LoadPicture()
End Sub Private Sub Command7_Click() '添加图片
Set mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.LoadFromFile picpath
Adodc1.Recordset.Fields("图示").Value = mstream.Read
Adodc1.Recordset.Update
End Sub