在PB中利用DataWindow
P>随着MIS开发工具的日益完善,人们对信息检索的要求也越来越高,以往每次查询时都由用户输入,然后进行检索的方式已越来越无法满足用户的要求,许多用户都希望系统具有自动记忆查询条件的功能,这样经常使用的查询条件就不必重复输入了。
PowerBuilder(以下简称PB)中的DataStore(数据存储)可以帮助开发人员方便地解决这一问题。PB作为C/S环境下的数据库开发工具,其面向对象、可视化以及方便移植等特点引人注目,成为目前非常流行的数据库前端开发工具。本文以一个文献索引数据库为实例,详细介绍如何在PB中利用DataStore实现查询条件的记忆。
DataStore是非可视的数据窗口控件,它能够为应用程序存储数据而不消耗任何图形资源。除了一些可视特征外,它的功能及行为与数据窗口控件相同。因此,我们可以利用DataStore的特点方便地记忆和维护查询条件。
第一步,在数据库中建立一个查询条件表,其中包含每个要用到的条件字段(如标题、文献来源、开始日期、结束日期等)和一个日期字段、时间字段。该表用来保存最近使用的10个(如果需要可以保存任意个)不同条件,每个条件就是一条记录,后两个字段(日期、时间)用来记载条件的使用时间。
第二步,创建一个包含查询条件表中所有字段的数据窗口对象 dw_c& + FROM "index" & + WHERE +sql_title +sql_source +sql_date+sql_page & + ORDER BY "index"."num" ASC rowcount=ids_data.rowcount()for rownum=1 to rowcount//判断该条件是否已经存在if ids_data.object.data[rownum,1]=bt and &ids_data.object.data[rownum,2]=source and &ids_data.object.data[rownum,3]=start_day and &ids_data.object.data[rownum,4]=end_day and &ids_data.object.data[rownum,5]=page thenids_data.object.data[rownum,6]=now()ids_data.object.data[rownum,7]=today()exist=trueexitend ifnextif not exist then//条件不存在,记忆新条件if rowcount$#@60; 10 thenelseids_data.deleterow(1)end ifrownum=ids_data.insertrow(0)ids_data.object.data[rownum,1]=btids_data.object.data[rownum,2]=sourceids_data.object.data[rownum,3]=start_dayids_data.object.data[rownum,4]=end_dayids_data.object.data[rownum,5]=pageids_data.object.data[rownum,6]=now()ids_data.object.data[rownum,7]=today()end ifids_data.update()//根据生成的SQL语句,修改主窗口中的数据窗口语法,进行查询w_index.dw_1.setsqlselect(sqltext)close(parent)if isvalid(w_index) then w_index.dw_1.retrieve()pb_2(取消按钮)的Clicked事件:close(parent) 以上程序在Pb6.5、SybaseSQL Anywhere5.0下运行通过,读者对它稍加修改就可应用在自己开发的MIS系统中。进入讨论组讨论。
- 最新文章
- 在PB程序中实现ODBC数据源的添加[01-04]
- PowerBuilder应用开发系列讲座(16)[01-04]
- 用PowerBuilder6.0建立B/S结构的应用程序[01-04]
- PowerBuider 6.0优化自动生[01-04]
- PowerBuilder应用开发系列讲座(40)[01-04]
- PowerBuilder中数据窗口的数据缓冲区[01-04]
- 相关文章
