俺是初學者
想弄一個從mdb資料庫里面的一個表中讀取并匯出長二進制資料的vb小程式
(已明確長二進制資料檔案格式為*.cll)
以下是代碼,運行到.SaveToFile mystr, adSaveCreateOverWrite就中斷了
提示 實時錯誤"3004",寫入檔案失敗,兄弟們幫分析以下啊、、、求救中
Private Sub Command1_Click()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Str1 As String
Dim Str2 As String
Dim Str3 As String
Str1 = "Provider=Microsoft.Jet.OLEDB.4.0;"
Str2 = "Data Source=D:\mdb檔案\Access_db.mdb;"
Str3 = "Jet OLEDB:Database Password="
Dim mystr As String
Dim mst As New ADODB.Stream
conn.Open Str1 & Str2 & Str3
S = "select * from Z_Bd"
rs.Open S, conn, 3, 3
Do While Not rs.EOF = True
DoEvents
mystr = App.Path & "\結果\" & ".cll" '
With mst
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write rs.Fields("TableBd")
.SaveToFile mystr, adSaveCreateOverWrite
End With
mst.Close
rs.MoveNext
Loop
rs.Close
conn.Close
End Sub
uj5u.com熱心網友回復:
檢查欄位是否為ole型別檢查ado版本是是否為2.5及以上
uj5u.com熱心網友回復:
為什么還要用 ADODB.Stream來寫?直接下面這樣不行嗎?
'.........
Dim byt() As Byte
byt=rs("TableBd").GetChunk(rs("TableBd").ActualSize)
Open "C:\結果.cll" for binary As #1
Put #1,,byt
Close #1
再者你那個代碼把表里的內容全讀出來,讀一條,寫一次,好累哦,是必須要這樣嗎?
并且關鍵是那個DoEvents,千萬要去掉,不然你頭一潭訓沒寫完,你第二條的內容就跟著寫進來了(因為寫還是要時間的),所以很容易出錯!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/112433.html
