我在資料視窗中使用ole呼叫畫圖程式,對圖片進行處理,可以打開畫圖,但是編輯完成之后,進行更新保存,就會提示“不能更新客戶端”,試了好多次都不能解決,不知道是什么問題,請高手給個解答。
uj5u.com熱心網友回復:
LZ沒把問題講清楚,什么是“不能更新客戶端”這個OLE又是什么
這個提示應該是你程式里的一個messagebox 你這樣講我們很難幫你
uj5u.com熱心網友回復:
現以一個實體介紹影像直接存入資料庫及其顯示、列印的方法,實體的環境為PB和ORACLE資料庫。⑴ 建立兩個表:
職工資訊表emp_info
列名 型別 長度 內容
Emp_ID Number 4 職工號
Name Char 8 姓名
Sex Char 1 性別
...
表 1
職工照片表emp_photo
列名 型別 長度 內容
Emp_ID Number 4 職工號
Photo Long raw 照片
表 2
它們都以emp_ID作關鍵字,型別long raw可以用來存盤照片資料。
⑵ 在應用系統主程式中連接資料庫。定義全域變數integer g_emp_ID,表示要處理照片的職工號。新建一視窗w_photo,定義視窗的實體變數:
blob I_photo //存放照片資料
int fp //檔案指標
⑶ 影像存盤
將經過掃描、轉換為JPG格式檔案的職工照片存放在目錄中。現在處理如何將照片存入職工照片表emp_photo中:
在視窗中建立一按鈕cb_store ,click事件程式撰寫如下:
string ls_path_filename,ls_filename
getfileopenname('選擇照片檔案',ls_path_filename,ls_filename,"JPG","JPG Files(*.JPG),*.JPG")
if ls_filename='' then return
fp=fileopen(ls_path_name,streammode!) //打開JPG照片檔案
fileread(fp,i_photo) //照片資料存入blob型別I_photo變數中
fileclose(fp) //照片的JPG檔案容量很小,只讀取最多64KB的資料
//照片資料存入職工照片表中
updateblob emp_photo set photo=:i_photo where emp_ID=:g_emp_ID ;
if sqlca.sqlcode= -1 then
ROLLBACK;
messagebox('出錯資訊','照片存盤失敗!')
else
commit;
end if
⑷ 影像顯示
職工照片要求和職工資訊一起顯示、列印。在視窗中建立一資料視窗控制元件dw_1,然后利用資料視窗畫筆以freeform風格新建一資料視窗dw_emp_info,它以職工號為引數檢索emp_info(職工資訊表)的資料:職工號和姓名。為處理照片顯示和列印,在資料視窗中建立一個OLE物件,在出現的“inert object”(插入物件)對話框中,選中“insert control”單選鈕,在“control type”控制元件選擇串列框中找到“Microsoft Web瀏覽器”,選中它,然后按確定按鈕,在該物件name屬性中輸入ole_photo,然后按確定。這時在資料視窗中增加了一個矩形物件,這就是顯示照片的物件。調整該物件的大小,使能容納實際照片大小。如圖1所示:
圖 1
設定dw_1的Datawindow Object Name 屬性為dw_emp_info。在視窗open事件中撰寫如下程式:
dw_1.settransobject(sqlca)
dw_1.retrieve(g_emp_ID)
在視窗中建立一按鈕cb_display,實作影像顯示,click事件程式如下:
//從照片表中取出照片資料
selectblob photo into :i_photo from emp_photo
where emp_ID = :g_emp_ID;
//建立臨時檔案
fp=fileopen('c:\~~temp_photo.jpg',streammode!,write!,lockreadwrite!,replace!)
if fp= - 1 then
messagebox('出錯資訊','JPG臨時檔案建立失敗')
return
end if
//建立JPG 照片檔案
filewrite(fp,i_photo)
fileclose(fp)
//在資料視窗中顯示照片
dw_1.object.ole_photo.object.navigate('c:\~~temp_photo.jpg')
⑸ 影像列印
在視窗中建立一按鈕cb_print,click事件如下:
dw_1.print()
利用資料視窗的列印函式即可將職工資訊和照片一起列印出來。
4.結束語
從上述實體可見,該方法使用檔案函式處理JPG照片檔案和BLOB型別記憶體變數之間的資料轉換,由BLOB變數向資料庫存貯或讀取照片資料,由Microsoft Web瀏覽控制元件實作JPG檔案的顯示和列印,如圖2。
圖 2
該方法快速有效,實作了JPG影像檔案的資料庫存盤、顯示、列印。資料庫檢索照片的速度大大快于檔案系統;在網路運行的應用系統中大大減輕了網路負載,提高了速度;也大大節省了資料庫存盤容量。圖2所示處理方法同樣適用于采用支持WEB瀏覽控制元件的開發工具和支持長二進制資料存盤的資料庫的應用系統。
uj5u.com熱心網友回復:
根據您的描述,你的代碼實作的是讀取和寫入圖片資訊到資料庫。跟修改圖片沒關系的。uj5u.com熱心網友回復:
https://img.uj5u.com/2020/09/18/97215180726291.gifuj5u.com熱心網友回復:
https://img.uj5u.com/2020/09/18/97215180726291.gifuj5u.com熱心網友回復:
汗,學一招吧,發不好了
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/71853.html
標籤:數據庫相關
上一篇:祝寶寶六一節快樂,:)
