2011-04-12 129 views
1

爲什麼我的圖像沒有插入?這是我的代碼。vb 6.0將圖像位圖插入ms訪問數據庫

Sub SaveToDBs(strImagePath As String, fname As String) 
rs.Close 
rs.Open "Sheet1", conn, adOpenDynamic, adLockBatchOptimistic, adCmdTable 
Dim bytBLOB() As Byte 
MsgBox strImagePath 
Dim intNum As Integer 
With rs 
    intNum = FreeFile 
    Open strImagePath For Binary As #intNum 
    ReDim bytBLOB(FileLen(strImagePath)) 
    'Read data and close file 
    Get #intNum, , bytBLOB 
    Close #1 
    .Fields(fname).AppendChunk bytBLOB 
    .Update 
End With 
    MsgBox "done" 
End Sub 

我得到了「完成」msgbox,但沒有插入圖像!!!!

+0

是你的列'OLE Object'類型嗎?你使用「綁定對象框架」控件來顯示圖像嗎? – wqw 2011-04-13 07:39:24

+0

@wqw是的,該字段是OLE對象類型。 – Anand 2011-04-13 08:08:07

回答

3

我通常使用ADODB.Stream來處理這類事情 - 我發現比分塊方法更容易理解。

Sub SaveToDBs(strImagePath As String, fname As String) 
rs.Close 
rs.Open "Sheet1", conn, adOpenDynamic, adLockBatchOptimistic, adCmdTable 
MsgBox strImagePath 
Dim intNum As Integer 
Dim myStream as ADODB.Stream 
With rs  
    .AddNew 
    Set myStream = new ADODB.Stream 
    myStream.Type = adTypeBinary 
    myStream.LoadFromFile(strImagePath) 
    .Fields(fname) = myStream.Read 
    .Update 
    Set myStream = Nothing 
End With 
    MsgBox "done" 
End Sub 

ADODB.Stream從ADO 2.5版增加:
ADO Version History
ADO Stream Documentation

+0

我認爲ADODB.Stream只能在腳本中使用! – Anand 2011-04-13 08:06:26

+1

我認爲ADODB.Stream是在MDAC 2.5中添加的,因此如果您引用的是早期版本的MDAC,它將不可用。 – jakdep 2011-04-13 14:16:43

+0

它在Windows XP(x86)中正常工作!但不是在Windows 7(x64)!!!! – Anand 2011-04-16 08:09:27

1

你必須堅持爲MS訪問結構化存儲位圖結合按預期運行。

查看Edanmo的Load and save pictures to byte arrays.示例,以便以兼容的方式進行序列化。然後,您可以使用簡單分配更新您的記錄集字段,如果它是客戶端。