请高手看看这个ADO问题.万分火急...呀已经搞了我一天了.....

蒋宏伟 2003-03-25 05:26:53
我用ADO做了一个输入输出文件的数据库,数据库内容比较简单.但是有一个不同的地方,就是二进制字段的值很大,有几百K到20M左右.
DBgrid和一些其它的控件联接了数据库,但是是当我输入文件时发现当输入大文件时(大于100K左右),输入完后就不能移动指针,移动就会出现自动化错误,然后VB整个都会退出
如不移动指针,马上导出这条记录,数据能正常打开,说明数据已经正常导入.或者马上删掉这个字段数值.也可以移动指针.不知哪位高手遇到这种问题,还请救我一马.

工程里面我引用了DAO3.6,ADO2.7,Microsoftdata Binding Collection VB 6.0,等等

但是我有一个范例里面也是用这种方法,只不过他是用的DAO,它可以导入很大的文件,我试了一个10的文件它也可以导进去呀.这是怎么回事呢.


下面是几个关键代码:

用如下方式调用的这个窗体

set formtemp = new frmbrowse
set formtemp.mrsformrecordset="一个已经存在的ADO记录集"
formtemp.show


Public mrsFormRecordset As ADODB.Recordset
'这个是窗体全局变量,在load事件里面把它赋值给带窗体里的ADO控件

'这是里面一个按钮过程的代码,主要是导入一个文件到一个二进制字段

Dim DataFile As Integer, Fl As Long, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, i As Integer
Const ChunkSize As Integer = 32767
Dim MediaTemp As String
Dim lngOffset As Long
Dim lngtotalsize As Long
Dim strChunk As String
DataFile = 1


Cmdg.FileName = ""
Cmdg.InitDir = App.Path
Cmdg.Filter = "*.AI|*.AI"
Cmdg.DialogTitle = "导入AI..."
Cmdg.ShowOpen

If Cmdg.FileName = "" Or Dir(Cmdg.FileName) = "" Then Exit Sub
Open Cmdg.FileName For Binary Access Read As DataFile '将图片文件以二进制形式写入数据库
Fl = LOF(DataFile) ' 文件中数据长度
If Fl = 0 Then
Close DataFile
Exit Sub
End If
Chunks = Fl \ ChunkSize
Fragment = Fl Mod ChunkSize
' mrsFormRecordset!AIFile.AppendChunk Null
ReDim Chunk(Fragment)
Get DataFile, , Chunk()
mrsFormRecordset!AIFile.AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get DataFile, , Chunk()
mrsFormRecordset!AIFile.AppendChunk Chunk()
lngtotalsize = mrsFormRecordset!AIFile.ActualSize
Next i
Close DataFile

先谢过啦.
而且有一个问题很奇怪,就是导入的时候每循环一次文件长度就会增加一个字节.最后文件长度是原来的文件长度加上循环次数.这是什么原因导致的,但文件可以正常打开开.

...全文
63 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsgzsgzsg 2003-03-30
  • 打赏
  • 举报
回复
Open Cmdg.FileName For Binary Access Read As DataFile '将图片文件以二进制形式写入数据库
Fl = LOF(DataFile) ' 文件中数据长度
If Fl = 0 Then
Close DataFile
Exit Sub
End If
ReDim Chunk(Fl)
Get DataFile, 1, Chunk
mrsFormRecordset!AIFile.AppendChunk Chunk
Close DataFile
蒋宏伟 2003-03-30
  • 打赏
  • 举报
回复
这几天我试了一下当导入的字段数值大于60K时就会出现这种问题.
look4u 2003-03-28
  • 打赏
  • 举报
回复
关注!!
蒋宏伟 2003-03-28
  • 打赏
  • 举报
回复
可是我一直都是SP5呀,我用CC也检查了,什么都对.一直也有查出原因,还有在编译好了以后.在别的机器上运行总是提示"未找到提供程序,该程序未正确安装."这是什么原因呀.这台机子里我也ado 2.7都装了也用了微软的CC检查,都正确,我用的DAO6.0也有,还有jet3.51也正常,可就是不能执行.这是什么原因呀.
sicainiao 2003-03-26
  • 打赏
  • 举报
回复
对安装最新的sp5,我想应该就可以解决了。
chenyu5188 2003-03-26
  • 打赏
  • 举报
回复
安装SP5补丁
同意2楼的说法。
lxcc 2003-03-26
  • 打赏
  • 举报
回复
up
bluesanke 2003-03-26
  • 打赏
  • 举报
回复
是ado的问题,同意2楼的说法!
xd1205 2003-03-25
  • 打赏
  • 举报
回复
还是ADO的老问题,去下载一个微软的ADO检查程序吧,问题应该可以找到( Compont Check)
蒋宏伟 2003-03-25
  • 打赏
  • 举报
回复
上面有一个地方漏打了一个字是"可以导入10M的文件".

1,216

社区成员

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

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