第一范文网 - 专业文章范例文档资料分享平台

在PB中巧用下拉数据窗口

来源:用户分享 时间:2025/5/26 11:35:38 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

在PB中巧用下拉数据窗口

PowerPB提供了下拉数据窗口(DropDown DataWindow),使数据窗口更灵活、更方便。在用数据窗口进行数据录入时,经常要用到代码录入,即对经常输入的某些值设置代码,录入时直接录入代码即可。例如,有两个表,主表main_table和代码表code_table,录入时主表中需要代码表中的数据,但不允许录入不在代码表中的数据。下面介绍如何使用下拉数据窗口实现上述功能。

静态设计下拉数据窗口

首先对主表和代码表设计两个数据窗口dw_main和dw_code,其中dw_main包括字段id、name、sex、city和unit;dw_code包括字段code和data。假设unit字段有几个常用值可使用代码录入,则在设计dw_main时,用鼠标右键点击字段unit,在下拉菜单中选择Properties...(属性),则系统会弹出unit列的属性对话框;在其中选择Edit(编辑)项,并在Style(风格)下拉列表框中选择DropDownDW项;然后在下面的Options(选项)框中作具体的选项配置:在DataWindow下拉框中选择已设计好的代码数据窗口dw_code作为下拉数据窗口;在DisplayColumn(显示列)下拉框中选择code字段;在Data Column(数据列)下拉框中选择data字段 ,这表示显示的是code字段的内容,而实际存于表main_table中的是data字段的内容。至此,数据窗口设计完毕。 设计完数据窗口后,需要建立一个数据录入的窗口(window),名字为w_input;在窗口w_input上建立一个数据窗口的控件dw_1,其属性DataWindow Object Name设为dw_main,并在w_input的open事件中写入下列语句: dw_1.SetTransObject(SQLCA) dw_1.Retrieve()

这样,在执行此窗口时,在unit字段上就会出现一个下拉列表框,列出了表code_table中所有的内容,用户可以用鼠标选择录入。

动态改变SQL语句 在上面的例子中,如果表main_table中的字段city也需要代码录入,则还需为city字段新建一个表,这样很麻烦,因为有几个字段需要代码,就需有几个表与之对应。我们可利用下拉数据窗口的一些特点来解决这一问题。可以相应地修改表code_table的结构,加一 个字段field(char(30)),以存储需要代码的字段名,这样,就可利用SQL语句对之进行检索,以得到某字段的所有代码。具体实现如下: 重新设计数据窗口dw_code,把field字段加上并使它不可见(因为用户不需要见到该字段的内容),数据窗口dw_main和窗口w_input的设置同上,只是在数据窗口dw_1中需要进行一些编程。在ItemFocusChanged事件中,加入如下代码: String ls_sql Integer rtncode

DataWindowChild field_child

//dwo为该事件的参数,其name属性的值表示获得焦点的字段名 Choose Case lower(dwo.name) Case ‘city' //city字段获得焦点

//获得city字段下拉数据窗口的句柄

rtncode = dw_1.GetChild(\

If rtncode = -1 Then MessageBox( \//设置事务对象

field_child.SetTransObject(SQLCA) //获得下拉数据窗口的SQL语句 ls_sql=field_child.GetSQLSelect() //重新设置SQL语句,加上Where条件

ls_sql=ls_sql+\ field_child.SetSQLSelect(ls_sql) //取得满足条件的数据 field_child.Retrieve() Case ‘unit' unit字段获得焦点

//获得unit字段下拉数据窗口的句柄

rtncode = dw_1.GetChild(\……(此处编程同上) End Choose

动态设置取值参数 上例中采用动态改变SQL语句,其实,下拉数据窗口有一种更简单的方法就是设置取值参数(Retrieval Arguments),但这种方法适合从固定表中取数据,如果是从动态表(即表名不固定)中取数据,则只能通过改变SQL语句来实现。

修改数据窗口dw_code,在图形方式下,选择Design菜单下的Retrieval Arguments…,设置取值参数的类型为String,名字可任取,假设为field_data。然后在窗口下面的Where标签中选择Column为\为\为取值参数的值:field_data(变量名前加冒号表示该变量的值),至此,取值参数设置完毕。同上例,也需要在窗口w_input中的数据窗口控件dw_1中的ItemFocusChanged事件中进行如下编程: Integer rtncode

DataWindowChild field_child

//dwo为该事件的参数,其name属性的值表示获得焦点的字段名 Choose Case lower(dwo.name) Case ‘city'//city字段获得焦点 //获得city字段下拉数据窗口的句柄

rtncode = dw_1.GetChild(\

If rtncode = -1 Then MessageBox( \//设置事务对象

field_child.SetTransObject(SQLCA)

//利用取值参数取得满足条件的数据,如果没有数据,则插入一空记录,否则系统会提示一个英文对话框,要求输入取值参数的值

If field_child.Retrieve(dwo.name)<1 Then field_child.InsertRow(0) Case ‘unit' //unit字段获得焦点

//获得unit字段下拉数据窗口的句柄

rtncode = dw_1.GetChild(\……(此处编程同上) End Choose

搜索更多关于: 在PB中巧用下拉数据窗口 的文档
在PB中巧用下拉数据窗口.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8fgjq1483k6i8ss1cmsn_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top