前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

排行榜 - 在PowerBuilder中利用DataStore实现查询条件的记忆 - PowerBuilder使用技巧集调查 - 新榜网 首页动漫榜美食榜记事榜财经榜体育榜娱乐榜书籍榜数码榜图片榜女性榜家居榜发布排行榜提出意见 站长排行榜站长排行榜 >> 数据库 >> 数据库综合 >> PowerBuilder使用技巧集调查 >> 在PowerBuilder中利用DataStore实现查询条件的记忆 在PowerBuilder中利用DataStore实现查询条件的记忆 发布时间:2008-10-8 14:50:12 来源:新榜网 北京延庆某部科技处 王永生 返回 ---- 随着MIS开发工具的日益完善,人们对信息检索的要求也越来越高,以往每次查询时都由用户输入,然后进行检索的方式已越来越无法满足用户的要求,许多用户都希望系统具有自动记忆查询条件的功能,这样经常使用的查询条件就不必重复输入了。PowerBuilder(以下简称PB)中的DataStore(数据存储)可以帮助开发人员方便地解决这一问题。PB作为C/S环境下的数据库开发工具,其面向对象、可视化以及方便移植等特点引人注目,成为目前非常流行的数据库前端开发工具。本文以一个文献索引数据库为实例,详细介绍如何在PB中利用DataStore实现查询条件的记忆。 ---- DataStore是非可视的数据窗口控件,它能够为应用程序存储数据而不消耗任何图形资源。除了一些可视特征外,它的功能及行为与数据窗口控件相同。因此,我们可以利用DataStore的特点方便地记忆和维护查询条件。 ---- 第一步,在数据库中建立一个查询条件表,其中包含每个要用到的条件字段(如标题、文献来源、开始日期、结束日期等)和一个日期字段、时间字段。该表用来保存最近使用的10个(如果需要可以保存任意个)不同条件,每个条件就是一条记录,后两个字段(日期、时间)用来记载条件的使用时间。 ---- 第二步,创建一个包含查询条件表中所有字段的数据窗口对象dw_condation,按使用时间的先后排序。进行查询条件设置时, ---- 第三步,构造如下图的查询条件设置窗口。 ---- 四个复选框对应四个条件字段,左、右方向按钮用来浏览设置最近使用过的条件。 ---- 第四步,为窗口事件及各控件编写相应的程序。 ---- 定义窗口实例变量: datastore ids_Data long currentrow 窗口的Open事件: ids_Data = Create DataStore //创建数据存储实例 ids_Data.DataObject = "dw_condation" //将dw_condation数据窗口对象与ids_Data连接 ids_Data.SetTransObject(sqlca) ids_data.retrieve() if ids_data.rowcount() >1 then //设置当前条件为最后一次使用的条件 pb_3.enabled=true currentrow=ids_data.rowcount() trigger event ue_setquery(ids_data.rowcount()) end if 窗口自定义事件ue_setquery: string bt,source //标题、文献来源 date start_day,end_day//开始日期、结束日期 long page //页号 //根据参数rownum从数据存储实例中得到各条件值 bt=ids_Data.Object.bt[rownum] source=ids_Data.Object.source[rownum] start_day=ids_Data.Object.begin[rownum] end_day=ids_Data.Object.end[rownum] page=ids_Data.Object.page[rownum] //初始化各窗口控件的状态 cbx_1.checked=false cbx_2.checked=false cbx_3.checked=false cbx_4.checked=false sle_1.enabled=false ddlb_1.enabled=false em_1.enabled=false em_2.enabled=false em_3.enabled=false //分别设置各个条件值 if not isnull(bt) and trim(bt)<>"" then cbx_1.checked=true sle_1.enabled=true sle_1.text=bt end if if not isnull(source) and trim(source)<>"" then cbx_2.checked=true ddlb_1.enabled=true ddlb_1.text=source end if if isnull(start_day) or start_day=date("1900-1-1") then em_1.text=string(today(),"yyyy-mm-dd") else cbx_3.checked=true em_1.enabled=true em_1.text=string(start_day,"yyyy-mm-dd") end if if isnull(end_day) or end_day=date("1900-1-1") then em_2.text="2050-1-1" else cbx_3.checked=true em_2.enabled=true em_2.text=string(end_day,"yyyy-mm-dd") end if if not isnull(page) and page<>0 then cbx_4.checked=true em_3.enabled=true em_3.text=string(page) end if 窗口的Close事件: destroy ids_data //清除数据存储实例 pb_3(向前按钮)的Clicked事件: if currentrow >1 then //设置前一个条件为当前条件 currentrow=currentrow - 1 trigger event ue_setquery(currentrow) pb_4.enabled=true if currentrow=1 then this.enabled=false end if pb_4(向后按钮)的Clicked事件: if currentrow<ids_data.rowcount() then //设置后一条件为当前条件 currentrow="currentrow" + 1 pb_3.enabled="true" if currentrow="ids_data.rowcount()" then this.enabled="false" trigger event ue_setquery(currentrow) end if pb_1(确定按钮)的Clicked事件: string bt,source,sqltext,sql_all,sql_title, sql_source,sql_date, sql_page date start_day,end_day long page,rownum,rowcount boolean exist //根据用户设置的条件动态生成查询SQL语法 if cbx_1.checked then bt="sle_1.text" sql_title=""index"."title" like " +"'%"+bt +"%'" end if if cbx_2.checked then source="ddlb_1.text" sql_source=" and "index"."source" like " +"'%"+source +"%'" end if if cbx_3.checked then start_day="date(em_1.text)" end_day="date(em_2.text)" sql_date="and"index"."date" >=" +"'" +string(start_day,"yyyy.mm.dd") +"'"+'and '+'"index"."date" <="+"" "+string(end_day,"yyyy.mm.dd") +"'" end if if cbx_4.checked then page="long(em_3.text)" sql_page=" and "index"."page"=" +string(page) end if sqltext="SELECT "index"."num", " & +'"index"."title", ' & +'"index"."source", ' & +'"index"."date", ' & +'"index"."page", ' & +'"index"."other" ' & +' 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" then ids_data.object.data[rownum,6]="now()" ids_data.object.data[rownum,7]="today()" exist="true" exit end if next if not exist then //条件不存在,记忆新条件 if rowcount< 10 then else ids_data.deleterow(1) end if rownum="ids_data.insertrow(0)" ids_data.object.data[rownum,1]="bt" ids_data.object.data[rownum,2]="source" ids_data.object.data[rownum,3]="start_day" ids_data.object.data[rownum,4]="end_day" ids_data.object.data[rownum,5]="page" ids_data.object.data[rownum,6]="now()" ids_data.object.data[rownum,7]="today()" end if ids_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、Sybase SQL Anywhere5.0下运行通过,读者对它稍加修改就可应用在自己开发的MIS系统中。 上一页1…4344454647484950下一页查看所有排行榜 上一篇:定位网络故障的网络链路诊断工具排行榜 下一篇:2010年5月12日站长新闻排行榜 PowerBuilder使用技巧集调查榜单列表 GRAPH在PowerBuilder中的应用 PowerBuilder共享数据窗口的应用 PB数据窗口中代码列动态选择两法 PowerBuilder下DataWindow的打印控制技术 用PowerBuilder制作指示灯 OLE在PB数据窗口中的实现 PB 6.0 的下拉列表框功能增强 PB6.5 在窗口刚打开动态调整Tab的默认页面 PB6.5中TreeView 控件的使用技巧 PB6.5中有关OLE控件功能的三个缺点 PB6中报表输出的技巧二则 PB数据窗口中按钮的封装 PB修改数据库表结构的技巧二则 Pb中定制打印页长 PB中数据窗口的两点应用技巧 PB中一个类Word打印对话框的实现 PB中抑制下拉数据窗口切换时弹出的检索参数 Power Builder数据录入同步显示的实现 PowerBuilder 的大文本数据打印 PowerBuilder中的Datawindow按页行滚动的应用设计 彻底解决PB打印金融业务单据方法 关于PB播放AVI文件的补充 关于PB应用程序的2000年问题 利用PB数据窗口特征制作进度条 利用PowerBuilder5.0转入多种数据源的数据 浅谈PowerBuilder中TreeView的实现 如何实现PB应用程序的屏幕保护功能 如何在POWER BUILDER中使用WINSOCK控件 深入了解PB6.0的特点及其应用程序发行 实现PowerBuilder应用系统的一级安全性 隐藏数据窗口中下拉数据窗的检索参数 用PB5设计串口通讯程序 用PB做一个通用右键菜单 用PowerBuilder6.0绘制对比图形 在PB的TreeView控件中实现自动查询 在PB应用中实现声音与动画 在PB应用中收发电子邮件 在PB中方便的实现图片动态切换 在PB中巧用下拉数据窗口 在PB中使用FoxPro数据库的方法 在PB中应用灵活多样的排序 在PowerBuilder中利用动态链接库控制鼠标的移动 在PowerBuilder中实现数据库的实时过滤 ActiveBar控件在PowerBuilder中的应用 PB API函数应用技巧六则 拨号连接--RAS16&32全面解剖 在PowerBuilder中利用DataStore实现查询条件的记忆 支持用户自定义变量的PowerBuilder表达式求值 为PB应用程序的每个按钮增加MicroHelp提示信息 利用API函数制作PB进度条 相关排行榜 SCSI(SAS) 交换技术能解决存储问题的原因排行榜 值得留意的重复数据删除产品排行榜 DB2数据库性能调整的实用技巧排行榜 降低数据中心成本的技巧排行榜 数据中心虚拟化的问题排行榜 数据中心的绿色存储策略排行榜 MySQL查询的性能优化排行 对MySQL服务器进行调优排行 安装与卸载MySQL系统服务常见问题调查 对MySQL服务器进行调优技巧排行榜 最新上榜 精华榜单 图文推荐 关于新榜 ┊ 广告服务 ┊ 本站协议 ┊ 会员注册 ┊ 网站地图 Copyright @ 2007-2012 xooob.com. Corporation, All Rights Reserved