请高手看看这个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

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

...全文
30 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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的文件".
回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2003-03-25 05:26
社区公告
暂无公告