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