国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

DataWindow的數據緩沖區

2024-07-21 02:09:19
字體:
來源:轉載
供稿:網友
datawindow的數據緩沖區
張健姿 01-6-22 下午 03:14:44

datawindow的四個緩站區 在powerbuilder中,datawindow是用戶前端用來存儲、操縱數據的對象。在每一個datawindow對象中有4個二維表作為數據緩沖區,用來存儲查詢到的數據。用戶在datawindow中對數據處理系統內部的操作實際上都是將數據在這幾個緩沖區中進行的修改和移動,最后在用戶提交數據庫時,系統根據這四個緩沖區中的信息形成sql的in-sert,update,delete等語句。這四個緩沖區是: primary buffer 這個緩沖區是存放填充窗口中datawindow控件中數據的,調用datawindow的retrieve()函數和insertrow()函數可以將數據填入這個緩沖區中。當使用有關datawindow刪除和過濾函數時,相應記錄將從這一緩沖區中刪除。而在執行datawindow的update()函數時,powerbuilder將查看這一緩沖區中的記錄,以形成sql insert和update語句。 delete buffer 這個緩沖區保存的是用deleterow()函數從primary buffer中刪除的記錄,執行update()函數時,系統根據這一緩沖區的記錄形成delete語句。 filter buffer 這個緩沖區存儲的是從original buffer使用filter()函數過濾到primary buffer中后剩余的記錄。 original buffer 這一緩沖區存儲的是datawindow最初執行retrieve()函數時得到的全部記錄。當提交數據庫時,根據primary buffer生成的update語句和根據delete buffer生成的delete語句都要依據這一緩沖區來構造這些sql語句中的where子句。 original buffer由powerbuilder內部維護,power-builder所提供的任何函數都無法改變它的值,不過通過powerbuilder所提供的getitem…系列的函數可以讀出datawindow最初從數據庫中查到的原始值。通過這些函數我們可以編程實現所謂的"undo"功能,并且得到在使用樂觀鎖時形成提交數據庫的where子句。 如果您當前使用的datawindow沒有設置修改的權力,您將不能對delete緩沖區和original緩沖進行操作,而且當調用update()時也將引起系統錯誤。 數據緩沖區的狀態值 primary buffer和delete buffer都有行級和列級的狀態值,這個狀態值是一個枚舉類型。在提交時由該行的狀態值來決定是否要產生sql語句,其中primary buffer產生的是in-sert和update語句,而delete buffer產生的是delete語句。我們用getitemstatus()函數和setitemstatus()函數可以對這一狀態值作操縱。這一枚舉狀態有以下四種: ·notmodified!———該行或行的值為查詢所得,沒有發生改變。 ·datamodified!———該行或列的值為查詢所得,發生了改變。 ·new!———該行或列為一插入的新行,數據沒有發生改變(數據為空或缺省值)。 ·newmodified!———該行或列為一插入的新行,數據發生改變。改變是通過用戶鍵盤輸入或調用了setitem()函數。 讓我們來看下面這一實例: 我們有這樣一張表,表中有三個字段,其中item是主鍵。 item char(5); name char(20); quantity int。 在script中我們查詢這張表的記錄,得到以下這些信息存儲了在primary和origianal buffer中,其中的行號是緩沖區加上的。!tb 01175000.gif 在窗口中,我們編程過濾掉數量為0的行,并且加上一個空行: dw_1.setfilter("quantity=0") dw_1.filter() dw_1.insertrow() 這時primary buffer的狀態為:!tb 01175001.gif 在filter buffer中的記錄為:!tb 01175002.gif 用戶在新插入行中輸入數據,刪除了第3行數據,并修改了第2行數據。當他離開這個datawindow時,primary和delete緩沖區的狀態如下:!tb 01175003.gif 這時執行dw_1.update()函數,系統將基于這兩個緩沖區生成sql語句。!tb 01175004.gif 在primary buffer中,狀態為notmodified和new!的行將被忽略而不產生sql語句。狀態為datamodified的行將產生update語句,狀態為newmodified的行將產生insert語句,在delete緩沖區中的行將產生delete語句。 四個緩沖區在編程中的運用 某些datawindow控件的函數有指定datawindow緩沖區的功能。如果缺省,則表示primary緩沖區。下列是可以指定緩沖區的函數: ·getitemstatus() ·getnextmodified() ·getupdatestatus() ·setitemstatus() 此外還有getitem…系列的函數,用以查詢datawindow中的值。這些函數有: ·getitemdate() ·getitemdatatime() ·getitemdecimal() ·getitemnumber() ·getitemstring() ·getitemtime()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄浪县| 环江| 虞城县| 交口县| 临沭县| 岢岚县| 和静县| 龙里县| 白城市| 蒙阴县| 外汇| 宜春市| 田林县| 信丰县| 桓台县| 康保县| 福海县| 湖口县| 于田县| 兴宁市| 西城区| 台州市| 开封市| 曲水县| 扎兰屯市| 左贡县| 准格尔旗| 广西| 西宁市| 南皮县| 江川县| 浦北县| 郯城县| 海晏县| 璧山县| 晋江市| 滨州市| 家居| 同仁县| 盈江县| 福泉市|