DataWindow中動態變更DropDownDW值
孫亞冰
PowerBuilder中的DataWindow對數據庫的操作功能非常強大,尤其是它的DropDownDW編輯風格,更是爲相關數據的一致性提供了保證。在實際應用中,經常需要將具有DropDownDW編輯風格的字段按某一條件顯示特定的內容。 比如,在某一應用中,部門員工字段的值須按變化的部門編號(或部門名稱)動態改變。
爲實現這一要求,可利用DataWindowChild對象。DataWindowChild對象可以是嵌套的報表,或具有DropDownDataWindow編輯風格的 DataWindow對象。例如,一個具有DropDownDataWindow編輯風格列的DataWindow對象就是一個DataWindowChild 對象。DataWindowChild 對象用於訪問 獨立於DataWindow 功能之外的 DataWindow 對象,並且由於它需要被存儲和自動實例化,它繼承自系統的 Structure 對象。
下面以一個小實例簡要說明。設有一名爲dw_1的DataWindow,其中有一“name (員工姓名)”字段,該字段具有DropDownDataWindow編輯風格,與之相連的DataWindow名爲dw_who,該DataWindow包含一個按字段“deptid(部門編號)”動態更新的查詢條件。代碼如下:
DataWindowChild dwc
integer rtncode
file://具有DropDownDW編輯風格、值需動態改變的字段的名稱
rtncode = dw_1.GetChild("name", dwc)
IF rtncode = -1 THEN MessageBox( "錯誤提示", "Not a DataWindowChild")
// 建立連接
CONNECT USING SQLCA;
// 設置子數據窗口的事物對象
dwc.SetTransObject(SQLCA)
file://子數據窗口的檢索值
dwc.Retrieve(20) file://讓name列只顯示部門編號爲20 的員工姓名
// 設置主數據窗口的事物對象並檢索
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
以上代碼在PB7 + Oracle8中調試通過。