在PB中巧用下拉数据窗口_第1页
在PB中巧用下拉数据窗口_第2页
在PB中巧用下拉数据窗口_第3页
在PB中巧用下拉数据窗口_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——在PB中巧用下拉数据窗口在PB中巧用下拉数据窗口

PowerPB提供了下拉数据窗口(DropDownDataWindow),使数据窗口更灵活、更便利。在用数据窗口进行数据录入时,经常要用到代码录入,即对经常输入的某些值设置代码,录入时直接录入代码即可。例如,有两个表,主表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字段;在DataColumn(数据列)下拉框中选择data字段,这表示显示的是code字段的内容,而实际存于表main_table中的是data字段的内容。至此,数据窗口设计完毕。设计完数据窗口后,需要建立一个数据录入的窗口(window),名字为w_input;在窗口w_input上建立一个数据窗口的控件dw_1,其属性DataWindowObjectName设为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事件中,参与如下代码:Stringls_sqlIntegerrtncode

DataWindowChildfield_child

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

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

rtncode=dw_1.GetChild(\

Ifrtncode=-1ThenMessageBox(\//设置事务对象

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(\……(此处编程同上)EndChoose

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

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

DataWindowChildfield_child

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

rtncode=dw_1.GetChild(\

Ifrtncode=-1ThenMessageBox(\//设置事务对象

field

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论