欢迎来到天天文库
浏览记录
ID:39467038
大小:31.00 KB
页数:4页
时间:2019-07-04
《PB]-子数据窗口操作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PB]-子数据窗口操作PB]-子数据窗口**通常的子数据窗口也就是下拉数据窗口。子数据窗口也是普通的数据窗口对象,没有什么特殊的地方,它的创建方法、可以使用的控件、编程时可以使用的函数等,都和普通的数据窗口相同。特殊的地方只是因为它放在了父数据窗口中,需要和父窗口进行配合。**当为数据窗口中某字段指定为下拉数据窗口编辑风格时,必须提供以下三个属性:a)子数据窗口名称。b)显示字段名称:该字段中的内容显示在父数据窗口的字段上,只是显示。c)数据字段名称:该字段中的内容要赋给父数据窗口的字段,要保存
2、到数据库中。分别对应数据窗口画板的Edit属性页中的:EidtStyle、DisplayColumn、DataColumn。*子数据窗口不能再包含子数据窗口;父数据窗口可以对其包含的子数据窗口进行插入、删除、检索和保存等操作。**获取子数据窗口的引用是进行其他操作的前提,使用函数GetChild来获取指定字段的子数据窗口。该函数的语法如下:dw_1.GetChild(name,dwchildvariable)其中,dw_1.是数据窗口控件名称;name为字段名称,为string类型;dwchil
3、dvariable为datawindowchild类型变量,该变量在函数正确执行后保存对子数据窗口的引用。该函数正确执行则返回1,否则返回-1。在获取了子数据窗口的引用之后,就可以捡索子数据窗口中的数据了。但是,检索子数据窗口的情况比较多,并且也有多种方法。**保证子数据窗口中的数据更新用户使用下拉数据窗口录入数据时,其中的数据并不一定有用户需要的。在某些情况下不允许用户再输入其他值,否则可能造成数据的不一致性,这时就可以不再编写其他的脚本。但在允许用户录入时,就需要把用户录入的数据保存在子数据
4、窗口对应的数据表中,以便以后数据录入时不再重复输入该数据。这时就应该编写脚本保存该数据了。**检索子数据窗口在应用中,对子数据窗口的编程不是检索数据,就是更新其中的数据。检索数据时,如果只显示子数据窗口中同父数据窗口中某字段取值对应的数据,这时子数据窗口的定义就应该有检索参数。根据检索和更新数据这两个因素,可以将检索数据的情况划分成以下三种: a)没有条件限制,并且不允许更新。 b)没有条件限制,并且允许更新。 c)有条件限制,不管是否可以更新。 检索子数据窗口有两个时机,一个是
5、在子数据窗口下拉时,另一个是在父数据窗口检索时。在子数据窗口打开时进行数据检索,每次录入该字段时都要进行,所以可以保证子数据窗口中的数据是最新的,所以这样的检索是在数据可以更新的情况下才使用。而不允许更新时,子数据窗口中的数据总是和父数据窗口检索时相同,如果不根据其他字段取值检索数据,就没有必要每次录入时都进行检索,只要在窗口打开时进行检索就可以了;当要根据其他字段取值检索数据时,还得在每次下拉子数据窗口时进行检索。*和父数据窗口共享事务对象在和父数据窗口共享事务对象的情况下的编程最简单。因为子
6、数据窗口可以和父数据窗口共享事务对象,只是简单地对父数据窗口进行检索,即可将子数据窗口中的所有数据自动检索出来。一般在窗口的open事件中编写如下脚本:dw_1.settransobject(sqlca)dw_1.retrieve()一种特殊的情况需要注意。当A、B两个数据窗口共享数据时,如果其中B有子数据窗口,A设置事务对象而B没有设置,当A使用函数Retrieve检索数据后,B因为共享数据也会自动获得数据,但是B中的下拉子数据窗口的字段只能显示编码而不能显示对应的汉字,即使该下拉子数据窗口的
7、属性中显示列、数据列都设置正确也是如此。只有当数据窗口B设置了事务对象才能在A检索数据之后正确显示下拉子数据窗口DisplayValue中指定的字段数据。*检索子数据窗口的数据因为用户随时都有可能录入了新数据,为了保证子数据窗口中显示最新数据,每次打开子数据窗口时都重新进行数据检索。用户在打开子数据窗口之前一般有鼠标点击动作,所以可以在数据窗口控件的clicked事件中编写脚本。例如,在一个进行工资人事管理的软件中,人事信息保存在employee库中,录入工资的数据窗口要选择职工时可以使用下拉数
8、据窗口。子数据窗口至少包含职工姓名name和职工身份证号no。下面是完整脚本:datawindowchildldwc_dataifdw_1.getchild("name",ldwc_data)<>-1thenldwc_data.settransobject(sqlca)ldwc_data.retrieve()endif在很多书籍和讲座中,都使用上面的编程方法进行子数据窗口的数据检索。(*可以在单击事件中先判断是否是下拉的字段列,再进行检索子数据窗口)实际上,还有更为合理的解决办法。因为上面的方法
此文档下载收益归作者所有