首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
6、源程序建立
1)首先在數據庫中建立如下結構的表blobsave:
字段名稱 數據類型 備注
id char(4) primairy key index
s_path char(50)
pic binary (50)
2)在PB建立PBl庫blobsave.PBl
3)在PBl庫blobsave.PBl中建立應用blobsave
在應用的open事件中設置數據庫連接程序(本程序中采用的是odbc方式連接數據庫,讀者可根據自己所建立的數據庫的不同選用不同的連接方式,以下連接數據庫的代碼也有所改動,至于連接不同的數據庫的方法,請參考有關資料,本文不做詳細介紹):
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Connectstring="DSN=blob""
connect;
open(w_main)
其中命令按鈕cb_path的clicked中的代碼格式如下:open(w_path)
其中命令按鈕cb_dbblob的clicked中的代碼格式如下:open(w_dbblob)
其中命令按鈕cb_OLEblob的clicked中的代碼格式如下:open(w_OLEblob)
4) 建立數據窗口dw_blobsave
按照上文中建立數?荽翱詰腷lob列的方法建立數據窗口dw_blobsave如圖所示:
其中:add,del,save,cancel,,retrieve等分別為數據窗口dw_blobsave的append row,delete row,update,retrieve動作按鈕。
首先創建實例變量 OLEstorage stor1
然后如圖建立窗口w_path,其中數據窗口控件dw_1的rowfocuschanged中的代碼如下:
long row_num
row_num=dw_1.getrow()
if row_num >0 then
ole_1.insertfile(dw_1.object.s_path[row_num])
end if
其中數據窗口dw_1的buttonclicked中的代碼如下:
if dwo.name="cbselect" then
long row_num
row_num=dw_1.getrow()
string filepath,filename
getfileopenname("請選擇備注文件",filepath,filename)
dw_1.object.s_path[row_num]=filepath
ole_1.insertfile(filepath)
end if
保存窗口w_path
6)建立窗口w_dbblob
打開w_path,把其另存為w_dbblob,改變數據窗口dw_1的rowfocuschanged中的代碼如下:
blob text1
long row_num
row_num=dw_1.getrow()
if row_num>0 then
string id
id = dw_1.object.id[row_num]
sqlca.autocommit=true
selectblob pic into :text1 from blobsave where id = :id;
ole_1.objectdata=text1
sqlca.autocommit=false
end if
改變數據窗口dw_1的buttonclicked中的代碼如下:
long row_num
if dwo.name="cbselect" then
row_num=dw_1.getrow()
string filepath,filename
getfileopenname("請選擇備注文件",filepath,filename)
dw_1.object.s_path[row_num]=filepath
ole_1.insertfile(filepath)
end if
if dwo.name="cbsave" then
string id
sqlca.autocommit = true
blob text1
text1 = ole_1.objectdata
dw_1.update()
commit;
row_num=dw_1.getrow()
id=dw_1.object.id[row_num]
updateblob blobsave
set pic = :text1
where id = :id ;
commit;
sqlca.autocommit = FALSE
dw_1.retrieve()
dw_1.scrolltorow(row_num)
end if
保存窗口w_dbblob
7)建立窗口w_OLEblob
打開w_path,把其另存為w_OLEblob,在窗口w_OLEblob的open事件中寫入以下代碼:
stor1 = create olestorage
stor1.open("c:\p1.ole") //打開或創建ole文件
在窗口w_OLEblob的close事件中寫入以下代碼:
destroy stor1
改變數據窗口dw_1的rowfocuschanged中的代碼如下:
blob text1
long row_num
row_num=dw_1.getrow()
if row_num>0 then
string id
id = dw_1.object.id[row_num]
ole_1.open(stor1,"w"+id)
end if
改變數據窗口dw_1的buttonclicked中的代碼如下:
long row_num
if dwo.name="cbselect" then
row_num=dw_1.getrow()
string filepath,filename
getfileopenname("請選擇備注文件",filepath,filename)
dw_1.object.s_path[row_num]=filepath
ole_1.insertfile(filepath)
end if
if dwo.name="cbsave" then
string id
row_num=dw_1.getrow()
id=dw_1.object.id[row_num]
ole_1.saveas(stor1,"w"+id)
stor1.save()
end if
保存窗口w_OLEblob,運行應用程序即可。
7、三種方法的優缺點
方法一:文件保存在固定的路徑下,數據庫中存取文件路徑和名稱可以節省數據空間,避免了數據庫過分膨脹,但備注文件必須在一定的目錄下,不能丟失,且同一目錄下文件不能重名,對文件的管理造成一定的困難,另外,在OLE控件中瀏覽顯示備注文件時,由于每次都要調用服務器程序,所以速度較慢。
方法二:在數據庫中用blob類型或者varbinary類型字段存儲備注文件,當文件存儲在數據庫中以后,就可以刪除硬盤上原來的臨時文件,不需要復雜的二進制文件管理,且數據庫可以存儲在網絡服務器上,對數據的共享非常方便。
方法三:在本地用OLE存儲結構存儲備注文件。可以把所有的二進制文件信息存儲在一個OLE存儲文件中,管理比較方便。當二進制文件信息存儲后,可以刪除原來的臨時文件;因為打開存儲文件后不需要每次執行服務器程序來顯示存儲信息,所以存取速度較快。 說明:本文在PB6.5,Sql anywhere數據庫和PB6.5,Sql Server數據庫下,windows98,windows me,NT4.0平臺上試驗通過。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |