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()