这个问题不好解决,高手请进

晚晨 2003-06-08 11:59:41
Public Sub pchuku(f As ADODB.Field, str As String)
Dim l As Long
Dim b() As Byte
Dim filenum As Integer
ReDim b(0)
filenum = FreeFile
l = f.ActualSize
ReDim b(l)
b() = f.GetChunk(l) ‘第二次出错的地方 提示类型不匹配
If Dir(str) <> "" Then
Kill str
End If
Open str For Binary As filenum
Put filenum, , b()
Close #filenum
End Sub

private sub command1_click()
pchuku cmd.Recordset("tupian2"), "c:\temp\temp.jpg"
Set Image1.Picture = LoadPicture("c:\temp\temp.jpg")
end sub


第一次调很好。用第二次点击就出错了,为什么呀?
getchunk这个东东什么窍门
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yefm 2003-06-08
  • 打赏
  • 举报
回复
'把文件从数据库中拿出来,并存为一个文件
Sub Load_File(F As Field, ByVal FileName As String)
Dim Tmp As String
Dim bit() As Byte

If VarType(F) <> vbNull Then
Tmp = FileName
bit = F.GetChunk(F.ActualSize)
Open Tmp For Binary As #1
Put 1, 1, bit
Close 1
End If

End Sub



Muzhu 2003-06-08
  • 打赏
  • 举报
回复
GetChunk 方法 (ADO)
返回大型文本或二进制数据 Field 对象的全部或部分内容。
AppendChunk 和 GetChunk 方法范例
该范例使用 AppendChunk 和 GetChunk 方法用其他记录中的数据填写图像字段。

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
晚晨 2003-06-08
  • 打赏
  • 举报
回复
高手帮忙看看我的代码

807

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧