PowerBuilder資料視窗的資料緩衝區

來源:互聯網
上載者:User

DATAWINDOW的四個緩衝區

在PowerBuilder中,DataWindow是使用者前端用來儲存、操縱資料的對象。在每一個DataWindow對象中有4個二維表作為資料緩衝區,用來儲存查詢到的資料。使用者在DataWindow中對資料處理系統內部的操作實際上都是將資料在這幾個緩衝區中進行的修改和移動,最後在使用者提交資料庫時,系統根據這四個緩衝區中的資訊形成SQL的IN-SERT,UPDATE,DELETE等語句。這四個緩衝區是:

1、Primary Buffer

這個緩衝區是存放填充視窗中DataWindow控制項中資料的,調用DataWindow的Retrieve()函數和InsertRow()函數可以將資料填入這個緩衝區中。當使用有關DataWindow刪除和過濾函數時,相應記錄將從這一緩衝區中刪除。而在執行DataWindow的Update()函數時,PowerBuilder將查看這一緩衝區中的記錄,以形成SQL INSERT和UPDATE語句。

2、Delete Buffer

這個緩衝區儲存的是用DeleteRow()函數從Primary Buffer中刪除的記錄,執行Update()函數時,系統根據這一緩衝區的記錄形成DELETE語句。

3、Filter Buffer

這個緩衝區儲存的是從Original Buffer使用Filter()函數過濾到Primary Buffer中後剩餘的記錄。

4、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()函數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.