一、首先要寫好兩個函數,分別是檔案的讀取與寫入:
參考 pb中讀寫檔案的函數:http://blog.csdn.net/xys_777/archive/2010/08/04/5787833.aspx
二、儲存檔案
li_value = GetFileOpenName("選擇檔案",ls_docname,ls_named)<br />IF li_value = 1 THEN<br />if f_readfile(lb_fj,ls_docname)=1 then<br />ll_picid=gf_getid('T_Picture') //這是一個得到新增id的函數<br />//需要先插入這條資料的其他資訊<br />INSERT INTO T_Svt_Picture ( PictureId,PicName,detaillogId )<br />VALUES ( :ll_picid,:ls_named, :ld_detaillogId);<br />if sqlca.sqlcode<0 then<br />rollback;<br />messagebox('系統提示','資料儲存失敗')<br />return<br />end if<br />//再用updateblob更新blob欄位<br />updateblob T_Picture set PicBlob=:lb_fj where pictureid=:ll_picid;<br />if sqlca.sqlcode<0 then<br />rollback;<br />messagebox('系統提示','儲存失敗')<br />return<br />else<br />commit;<br />end if<br />end if<br />end if</p><p>
三、開啟檔案
//用selectblob將blob類型資料賦值給blob變數 lb_fj<br />selectblob PicBlob into :lb_fj from T_Picture where pictureid=:ll_picid;<br />if sqlca.sqlcode<>0 then<br />messagebox('系統提示','資料讀取失敗')<br />return<br />end if<br />//需要將檔案重新在磁碟裡儲存出來,需要在之前存資料庫是記錄檔案名稱 dw_1.object.picname<br />ls_docname='c:/worktemp'<br />if not DirectoryExists(ls_docname) then CreateDirectory(ls_docname)<br />ls_docname=ls_docname+dw_1.object.picname[row]<br />if f_writefile(lb_fj,ls_docname)=1 then<br />//調用api開啟檔案<br />if ShellExecuteA(Handle(parent),ls_null,ls_docname,ls_null,ls_null, 1) > 32 then<br />return<br />else<br />messagebox('系統提示','系統開啟檔案出錯')<br />return<br />end if<br />end if</p><p>//api定義<br />Function long ShellExecuteA (ulong hwnd, string lpOperation, string lpFile,string lpParameters, string lpDirectory, long nShowCmd) library "shell32.dll"