'AppendChunk 和 GetChunk 方法范例 '该范例使用 AppendChunk 和 GetChunk 方法用其他记录中的数据填写图像字段。 '不过是SQLServer的,如果要用Access的,几乎不用改变什么东西。 '只是要有一个OLE型字段就行了。Public Sub AppendChunkX() Dim cnn1 As ADODB.Connection Dim rstPubInfo As ADODB.Recordset Dim strCnn As String Dim strPubID As String Dim strPRInfo As String Dim lngOffset As Long Dim lngLogoSize As Long Dim varLogo As Variant Dim varChunk As Variant
至于显示,可以是通过picturebox,通过窗体,
甚至用html,随你挑啦。
把access数据库里的存图形的某个字段改为存图形的就行了
可以调出图形,前提是数据库中的文件也要是OLE格式的大家别骂我我也不是高手,
只是随便说说而已
Ole字段不是吃干饭的。
实际上fishzone(阿愚) 的办法就是可以(使用控件效率运行效率有问题,特别在图片多的时间,数据库会撑得很大)。你只须在ACCESS中存储图片的路径。调用时先查该路径,使用image或picture等简单控件就可以将它们显示出来,一样的效果。
不瞒你说,我知道美国一家软件公司就是用的这种方法。
'该范例使用 AppendChunk 和 GetChunk 方法用其他记录中的数据填写图像字段。
'不过是SQLServer的,如果要用Access的,几乎不用改变什么东西。
'只是要有一个OLE型字段就行了。Public Sub AppendChunkX() Dim cnn1 As ADODB.Connection
Dim rstPubInfo As ADODB.Recordset
Dim strCnn As String
Dim strPubID As String
Dim strPRInfo As String
Dim lngOffset As Long
Dim lngLogoSize As Long
Dim varLogo As Variant
Dim varChunk As Variant
Const conChunkSize = 100 ' 打开连接
Set cnn1 = New ADODB.Connection
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
cnn1.Open strCnn
' 打开 pub_info 表。
Set rstPubInfo = New ADODB.Recordset
rstPubInfo.CursorType = adOpenKeyset
rstPubInfo.LockType = adLockOptimistic
rstPubInfo.Open "pub_info", cnn1, , , adCmdTable
' 提示复制徽标。
strMsg = "Available logos are : " & vbCr & vbCr
Do While Not rstPubInfo.EOF
strMsg = strMsg & rstPubInfo!pub_id & vbCr & _
Left(rstPubInfo!pr_info, InStr(rstPubInfo!pr_info, ",") - 1) & _
vbCr & vbCr
rstPubInfo.MoveNext
Loop
strMsg = strMsg & "Enter the ID of a logo to copy:"
strPubID = InputBox(strMsg)
' 将徽标复制到大块中的变量。
rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
lngLogoSize = rstPubInfo!logo.ActualSize
Do While lngOffset < lngLogoSize
varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
varLogo = varLogo & varChunk
lngOffset = lngOffset + conChunkSize
Loop
' 从用户得到数据。
strPubID = Trim(InputBox("Enter a new pub ID:"))
strPRInfo = Trim(InputBox("Enter descriptive text:"))
' 添加新记录,将徽标复制到大块中。
rstPubInfo.AddNew
rstPubInfo!pub_id = strPubID
rstPubInfo!pr_info = strPRInfo lngOffset = 0 ' 重置位移。
Do While lngOffset < lngLogoSize
varChunk = LeftB(RightB(varLogo, lngLogoSize - lngOffset), _
conChunkSize)
rstPubInfo!logo.AppendChunk varChunk
lngOffset = lngOffset + conChunkSize
Loop
rstPubInfo.Update
' 显示新添加的数据。
MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _
"Description: " & rstPubInfo!pr_info & vbCr & _
"Logo size: " & rstPubInfo!logo.ActualSize ' 删除新记录,因为这只是演示。
rstPubInfo.Requery
cnn1.Execute "DELETE FROM pub_info " & _
"WHERE pub_id = '" & strPubID & "'" rstPubInfo.Close
cnn1.Close End Sub
一个相应的目录中,在数据库中存储路径即可。