數(shù)據(jù)庫工程師:在PB中用OLE存取blob類型數(shù)據(jù)(三)

字號:

6、源程序建立
    1)首先在數(shù)據(jù)庫中建立如下結(jié)構(gòu)的表blobsave:
    字段名稱  數(shù)據(jù)類型  備注
    id  char(4)  primairy key index
    s_path  char(50)
    pic   binary (50)
    2)在PB建立PBl庫blobsave.PBl
    3)在PBl庫blobsave.PBl中建立應(yīng)用blobsave
    在應(yīng)用的open事件中設(shè)置數(shù)據(jù)庫連接程序(本程序中采用的是odbc方式連接數(shù)據(jù)庫,讀者可根據(jù)自己所建立的數(shù)據(jù)庫的不同選用不同的連接方式,以下連接數(shù)據(jù)庫的代碼也有所改動,至于連接不同的數(shù)據(jù)庫的方法,請參考有關(guān)資料,本文不做詳細介紹):
    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) 建立數(shù)據(jù)窗口dw_blobsave
    按照上文中建立數(shù)?荽翱詰腷lob列的方法建立數(shù)據(jù)窗口dw_blobsave如圖所示:
    其中:add,del,save,cancel,,retrieve等分別為數(shù)據(jù)窗口dw_blobsave的append row,delete row,update,retrieve動作按鈕。
    首先創(chuàng)建實例變量 OLEstorage stor1
    然后如圖建立窗口w_path,其中數(shù)據(jù)窗口控件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
    其中數(shù)據(jù)窗口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,改變數(shù)據(jù)窗口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