1. 程式人生 > >資料視窗控制元件函式GetChild( )

資料視窗控制元件函式GetChild( )

GetChild( )

功能:得到指定子資料視窗的引用並將其儲存到變數中 然後應用程式就可以使用該變數來操作子資料視窗物件

語法:dwcontrol.GetChild ( name, dwchildvariable )引數:dwcontrol 資料視窗控制元件名      name string 型別 列名 該列包含了欲得到引用的子資料視窗物件      dwchildvariable DataWindowChild 型別 用於儲存該函式得到的子資料視窗物件的引用      返回值:Integer 函式執行成功時返回 1, 出錯時返回-1 , 子資料視窗物件引用儲存在變數dwchildvariable 中 如果任何引數的值為NULL , 則GetChild()函式返回NULL用法

:這裡所說的子資料視窗包括兩方面的意義 一是資料視窗物件中的下拉資料窗 口 DropDownDataWindow 是複合風格資料視窗物件中的子報表 , 需要注意的是在建立複合風格的資料視窗物件時,它使用的子報表實際上也是個資料視窗物件 必須要設定其Name 屬性,否則就不能使用GetChild()函式來得到該子報表的引用。當應用程式需要以顯式方式提取子資料視窗物件的資料時 先使用 GetChild()函式得到該子資料視窗物件的引用 然後像操作普通資料視窗控制元件那樣檢索子資料視窗物件的資料。一般來說 在顯示主資料視窗時 PowerBuilder 會自動提取出子資料視窗物件的資料,但是 當子資料視窗物件使用了提取引數或檢索條件發生變化且需要檢索新的資料時 應用程式就需要自己編寫程式碼來實現資料提取工作了 。  當用戶在主資料視窗中插入一行或提取主資料視窗的資料時 PowerBuilder 也自動地提取出子資料視窗的資料 但是 如果子資料視窗帶有提取引數 那麼PowerBuilder 將顯示一個對話方塊 讓使用者輸入提取引數的值 要想不讓PowerBuilder 顯示該對話方塊 應用程式中可以在修改主資料視窗之前先顯式地提取出子資料視窗的資料。需要注意的是,如果巢狀報表的資料來源為外部資料來源,那麼應用程式不能使用 GetChild()函式得到子報表的引用。使用資料視窗控制元件的物件函式 Modify()修改資料視窗的某些屬性後,先前執行 GetChild()函式得到的子資料視窗物件引用可能不再有效。此時 需要重新呼叫 GetChild() 函式來得到有效的子資料視窗物件引用示例
:本例中 主資料視窗的 emp_state 列是個子資料視窗物件,該子資料視窗物件需要一個 地區 值作為提取引數,為了不讓PowerBuilder 顯示輸入提取引數的對話方塊程式碼中首先檢索了子資料視窗的資料 ,之後再提取主資料視窗的資料  DataWindowChild state_child //說明一個DataWindowChild 型別的變數  integer rtncode  rtncode = dw_1.GetChild("emp_state", state_child)  // 得到名稱為 emp_state 的子資料視窗物件的引用  IF rtncode = -1 THEN MessageBox( "錯誤", "不是子資料視窗")  // 如果未與資料庫建立連線時首先建立連線  CONNECT USING SQLCA;  // 設定子資料視窗使用的事務物件  state_child.SetTransObject(SQLCA)  // 使用地區值 北京 檢索子資料視窗物件的資料  state_child.Retrieve("East")  // 設定主資料視窗使用的事務物件並提取資料  dw_1.SetTransObject(SQLCA)  dw_1.Retrieve()