|
在PowerBuilder7.0中,数据库中各表的内容通常用数据窗口对象显示输出。在输出过程中,我们可以通过程序设置过滤条件,达到对记录筛选查询的目的。但是如何让用户尽可能方便、灵活地指定过滤条件,使查询更加有效和迅速,是软件开发时必须要考虑的问题。经过不断探索和实践,我们找到了一种比较理想的方法,对任意数据窗口对象,只要在任意字段上输入一个值,然后,选择一个关系运算符,就可以得到一个与该字段的关系表达式,进一步,还可以产生一般的逻辑表达式作为过滤条件,进行过滤,达到查询的目的。这种生成查询条件的方法新颖、独特,实现的查询模块简单、实用,可挂接到任何PB应用软件中,从而大大提高软件的开发效率。下面介绍实现方法和具体步骤。 一、准备 1.首先建立一个应用程序对象serch,并对其open事件编写如下代码: SQLCA.DBMS=ProfileString("PB.INI","Database","DBMS","") 2.在应用程序对象中定义以下两个全局变量: string op_r //关系运算符变量 3.建立任意一个数据库(例如,Adaptive Server Anywhere 6.0数据库test.db),配置ODBC、Profile,建立需要的若干个表。如:nhxx(农户信息表)、tjzl(生产信息表)等。可以使用任何已有的数据库和表。 4.建立需要的数据窗口对象。例如:d_nhxx(农户信息、网格样式)、d_scxx(生产信息、自由表样式)等。可以使用任何已有的数据窗口对象。 5.建立一个弹出式菜单m_popup,其中只有一个菜单条选项m_r(操作符),具体菜单项定义如下表: |
||||||||||||||||
|
||||||||||||||||
|
二、窗口设计 通用查询是在窗口中实现的,技术核心都在窗口的控件当中。 |
||||||||||||||||
|
|
||||||||||||||||
|
其中包含一个数据窗口控件dw_1,四个图形按钮pb_1、pb_2、pb_3、pb_4,一个下拉列表ddlb_1,三个命令按钮cb_1、cb_2、cb_3,三个单行编辑框sle_1、sle_2、sle_3。 下拉列表框ddlb_1的作用是选择不同的表。在它的item属性中设置两项:"农户信息"和"生产信息",作为表名提示信息。当选择某一项时,通过代码设置与该表对应数据窗口对象。通过修改和添加item项以及相应代码,即可以在数据窗口控件动态挂接任意数据窗口对象,从而实行对任意表的查询。这里设置的"农户信息"、"生产信息"两项,只是例子。 当下拉列表框ddlb_1的选项改变时,产生selectionchanged事件,通过下面程序代码,确定与表对应的数据窗口对象,动态挂接到数据窗口控件dw_1上,显示其内容,以便下一步查询。 string t_n_s,t_n_d //表名提示信息,数据窗口对象名 按钮cb_1(擦除条件)的作用是清除单行编辑框sle_3中的查询条件表达式,并使复合查询标志cmx置成"假"。复合查询标志cmx为"真"表示条件表达式中带有逻辑运算符(只使用AND),否则为简单的关系表达式。cb_1的clicked事件只有两行代码: "开始查询"按钮cb_2的作用是从单行编辑框sle_3中取出查询条件表达式,并以此作为过滤条件,对数据窗口控件的内容进行过滤,实现查询。cb_2的clicked事件代码为: 为了在数据窗口控件中输入查询内容,同时又不破坏表中原来的数据,我们给数据窗口控件dw_1的itemchanged事件编写一行代码: 为显示当前记录号,在数据窗口控件dw_1的rowfocuschanged事件编写一行代码: 接下来,最重要的一件事是对数据窗口控件dw_1的rbuttondown事件编码。当单击鼠标右键时,需要弹出一个关系描述符菜单,根据选择的菜单项,确定对应的关系运算符,并保存到全局变量op_r中。比如,选择"小于等于",得到关系运算符"<=",且赋给全局变量op_r。然后,取得当前列名、类型和当前控件的内容,组合成一个关系表达式。如果复合查询标志cmx的值为真,则用逻辑运算符"AND"组成逻辑表达式。关系表达式或逻辑表达式作为过滤条件字符串保存到sle_3.text中,显示在屏幕上并供"开始查询"按钮的clicked引用。 数据窗口控件dw_1的rbuttondown事件代码如下: 用来控制当前记录的四个图形按钮pb_1、pb_2、pb_3、pb_4的clicked事件代码分别为: 每改变当前记录后,都用一行代码 "退出"按钮cb_3的clicked事件代码为close(parent)。 至此,一个可对任意数据窗口对象、任意字段设置条件的通用查询窗口设计完成。 三、使用 前面设计的查询窗口可作为一个通用模块挂接到任意一个PB应用软件当中,挂接时只要修改窗口中下拉列表框ddlb_1的item属性和selectionchanged代码,然后打开该窗口即可。 窗口打开后,通常要做的第一件事,是单击窗口中"表名"右边的下拉列表,选择需要的表所对应的数据窗口对象。某一数据窗口对象被选中后,便显示在数据窗口控件中,同时改变窗口标题并显示出记录总数和当前记录号。接下来便可指定条件进行查询。 1、设置查询条件 单击某一字段的编辑区,输入要查询的部分或全部信息,单击鼠标右键,弹出一个菜单,从菜单中选择需要的某一项(关系运算符),即可在下面"查询条件"右边的单行编辑框中显示出关系表达式。继续操作,单行编辑框中便形成由逻辑运算符"AND"连接多个关系表达式的逻辑表达式。 2、开始查询 按Alt+Q或单击"开始查询"按钮,查询结果、满足条件的记录数、当前记录号显示在窗口。 3、擦除和修改条件 用前面方法设置的查询条件表达式在单行编辑框中可以左右滚动查看。如果操作有误或想重新设置查询条件,可按Alt+C或单击"擦除条件"按钮,也可在单行编辑框中直接修改查询条件。 条件表达式被擦除后,再进行查询,得到的便是当前数据窗口对象的所有记录。 4、记录翻阅 单击窗口上的四个图形按钮 四、结束语 上面介绍的通用查询窗口精巧、灵活、实用性强,已用于多个管理信息系统,大大提高了软件的开发效率和质量。 |
||||||||||||||||