表單上的控制元件,1個Adodc控制元件,1個DataGrid,一個image,1個commond(圖片輸入),1個通用對話框
要求:在瀏覽記錄時顯示照片;單擊“圖片輸入”時打開通用對話框,選擇指定圖片檔案將資料寫入資料庫中。
問題:運行后提示錯誤3219,提示:在此環境下不允許操作。代碼應該沒問題,控制元件的問題?還是.mdb檔案的資料庫有問題?請指教,多謝。
全部代碼如下:
Private Sub Command1_Click()
Dim strb() As Byte
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Binary As #1
fl = LOF(1)
ReDim strb(f1)
Get #1, , strb
Adodc1.Recordset.Fields("照片").AppendChunk strb
Close #1
Image1.Picture = LoadPicture(CommonDialog1.FileName)
End Sub
uj5u.com熱心網友回復:
樓主參考這個:使用流物件保存和顯示圖片
打開vb6,新建工程。
添加兩個按鈕,一個image控制元件
注意:Access中的photo欄位型別為OLE物件.
SqlServer中的photo欄位型別為Image
'** 參考 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
‘2.5版本以下不支持Stream物件
Dim iConcstr As String
Dim iConc As ADODB.Connection
'保存檔案到資料庫中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcstr As String
'讀取檔案到內容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二進制模式
.Open
.LoadFromFile App.Path + "\test.jpg"
End With
'打開保存檔案的表
Set iRe = New ADODB.Recordset
With iRe
.Open "select * from img", iConc, 1, 3
.AddNew '新增一條記錄
.Fields("photo") = iStm.Read
.Update
End With
'完成后關閉物件
iRe.Close
iStm.Close
End Sub
Sub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
'打開表
Set iRe = New ADODB.Recordset
‘得到最新添加的紀錄
iRe.Open "select top 1 * from img order by id desc", iConc, adOpenKeyset, adLockReadOnly
'保存到檔案
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("photo")
‘這里注意了,如果當前目錄下存在test1.jpg,會報一個檔案寫入失敗的錯誤.
.SaveToFile App.Path & "\test1.jpg"
End With
Image1.Picture = LoadPicture(App.Path & "\test1.jpg")
'關閉物件
iRe.Close
iStm.Close
End Sub
Private Sub Command1_Click()
Call s_ReadFile
End Sub
Private Sub Command2_Click()
Call s_SaveFile
End Sub
Private Sub Form_Load()
'資料庫連接字串
iConcstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\csdn_vb\database\保存圖片\access圖片\img.mdb"
‘下面的陳述句是連接sqlserver資料庫的.
‘iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
‘ "User ID=sa;Password=;Initial Catalog=test;Data Source=yang"
Set iConc = New ADODB.Connection
iConc.Open iConcstr
End Sub
Private Sub Form_Unload(Cancel As Integer)
iConc.Close
Set iConc = Nothing
End Sub
uj5u.com熱心網友回復:
你的問題應該是沒有當前記錄,或者記錄沒有打開另外
fl = LOF(1)
ReDim strb(f1)
這個錯誤,應該是:ReDim strb(f1-1)
uj5u.com熱心網友回復:
前些天這個帖子順便參考一下吧http://bbs.csdn.net/topics/390546962
√ 將圖片以二進制的形式寫入資料庫mdb出錯 [推薦] [ 資料庫(包含列印,安裝,報表)]
uj5u.com熱心網友回復:
http://download.csdn.net/detail/veron_04/1483930uj5u.com熱心網友回復:
http://blog.csdn.net/vansoft/article/details/3667917uj5u.com熱心網友回復:
Dim sTemp As String
sTemp = "insert into mypic(pic) values(?) "
dim PicB() as byte
dim FileID as long
fileid=freefile
open "c:/test.bmp" for binary access read as #fileid
redim picb(lof(fileid))
get fileid,,picb
close #fileid
dim Con as new connection
dim CMD as new command
con.connectionstring ="資料庫連接字串"
con.open
cmd.activeconnection=con
cmd.commandtext= stemp
cmd.commandtype=adcmdtext
cmd.parameters(0).type=adbinary
cmd.parameters(0).value=https://bbs.csdn.net/topics/picb
cmd.execute
con.close
set cmd=nothing
set con=nothing
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/142377.html
