!出错了!用ADO打开Access数据库写图片到其中一个二进制格式的字段

jamwaychen 2002-02-24 07:27:08
用ADO打开Access数据库,把一个图片写到其中一个二进制格式的字段里,数据库
有四个字段: no long类型 用于存id
pict binary类型 用于存图片
name text类型 用于存图片名及路径
about text类型 用于存图片的描述
现在运行时用错误,错误如下:

Private Function appendfun(ByVal txt0 As String, ByVal txt1 As String,

ByVal txt2 As String)
Dim lngfilelength As Long '所打开文件的长度
Dim lngblocksize As Long '每一块读娶文件的长度
Dim lngblockcount As Long '文件要分为多少块
Dim lnglastblock As Integer '最后一块的大小
Dim lngblockindex As Long '用于控制读数据的循环
Dim lngposition As Long '用于记录读出文件的指针
Dim btyget() As Byte '用于传送数据的二进制数组
lngblocksize = 2000 '每一块的大小



If cnn.State = adStateOpen Then
cnn.Close
End If
cnn.Open strconnect
rst.Open "gamephoto_tbl", cnn, adOpenKeyset, adLockPessimistic
If strfilename <> "" Then

rst.AddNew
rst.Fields("no") = Val(txt0)
rst.Fields("name") = strfilename
rst.Fields("about") = txt2
'这里没报错呀

Open strfilename For Binary As #1
lngfilelength = LOF(1)
lngblockcount = lngfilelength \ lngblocksize
lnglastblock = lngfilelength Mod lngblocksize

For lngblockindex = 1 To lngblockcount
Get #1, , btyget()
'这里错了提示“无效指针错误”
rst.Fields("pict").AppendChunk btyget()
'改为rst.Fields(1).AppendChunk btyget()也一样
'这里错了提示“无效指针错误”
lngposition = lngposition + lngblocksize
Next

If lnglastblock > 0 Then
ReDim btyget(lnglastblock)
Get #1, , btyget()
rst.Fields("pict").AppendChunk btyget()
End If

rst.Update
Close #1

MsgBox "OK"
cnn.Close
Unload Me
Else
MsgBox "请选择文件后再要求添加", vbOKOnly, "注意"
Unload Me
End If
End Function

小弟刚学数据库不久,请大家多多帮忙。
...全文
64 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamwaychen 2002-02-25
  • 打赏
  • 举报
回复
终于行了!!!!我重建了数据库,谢谢大家的帮助
尤其是 Tadpole0510(需心学习,玩命) ,谢谢你
还有,我不该怀疑你的技术:)不好意思......谢谢
可以的话以后多帮忙
jamwaychen 2002-02-25
  • 打赏
  • 举报
回复
我的E-mail是: jamwaychen@163.com
Tadpole0510 2002-02-24
  • 打赏
  • 举报
回复
吧你的email给我
Tadpole0510 2002-02-24
  • 打赏
  • 举报
回复
007:
明天给你我的原码吧
我要下线了
jamwaychen 2002-02-24
  • 打赏
  • 举报
回复
我按Tadpole0510(需心学习,玩命) 的改了后基本上是shawls(小山(坚持VB,学Delphi和C#)) 说的那网址上的源代码一样了,但就是不行!!真奇怪!!!
我用的access是用vb自带的“可视化数据管理”建的,不会有什么设置上的问题吧?如果有,可能会是那些呢?
Tadpole0510 2002-02-24
  • 打赏
  • 举报
回复
肯定惯用
Tadpole0510 2002-02-24
  • 打赏
  • 举报
回复
在For lngblockindex = 1 To lngblockcount
之前
加入 ReDim btyget(lngblocksize)
piguda 2002-02-24
  • 打赏
  • 举报
回复
我来看看哦,出错在哪呢?
shawls 2002-02-24
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/Read_Article.asp?id=12507

例子!
jamwaychen 2002-02-24
  • 打赏
  • 举报
回复
谢谢lanying(蓝鹰) ,我也试了
但我不需要打开太多的文件,每次打开一个就可以了
lanying 2002-02-24
  • 打赏
  • 举报
回复
Open strfilename For Binary Access Read As filnum()
jamwaychen 2002-02-24
  • 打赏
  • 举报
回复
我试过了没用,还是一样 无效指针错误......
到底是怎么回事?!我快疯了
Tadpole0510 2002-02-24
  • 打赏
  • 举报
回复
别忘了加分
Tadpole0510 2002-02-24
  • 打赏
  • 举报
回复
DIM Filnum as integer
filnum=FREEFILE
Open strfilename For Binary As #1
改为 Open strfilename For Binary Access Read As #filnum
Get #1, , btyget()
改为
Get #filnum, , btyget()
close#1
改为
close #filnum

jamwaychen 2002-02-24
  • 打赏
  • 举报
回复
有没有人肯帮帮我呀?

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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