祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 4272|回复: 0

[转帖]在PowerBuilder中实现数据库的实时过滤

[复制链接]

[转帖]在PowerBuilder中实现数据库的实时过滤

[复制链接]
ehxz

主题

0

回帖

59万

积分

管理员

积分
590891
贡献
在线时间
小时
2007-6-26 12:56:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×

---- 在 拥 有 大 量 数据 记 录 的 数 据 库 的 表 中 进 行 有 关 记 录 的 查 询, 如 果 不采 取 一 定 的 技 巧, 那 将 是 非 常 费 时 费 力 的 事 情, 利 用 单行 编 辑 器 和 数 据 窗 口 结 合, 再 进 行 适 当 编 程 就 能 够 实现 数 据 窗 口 中 的 记 录 根 据 你 键 入 的 字 符 而 逐 步 缩 小范 围, 以 方 便 查 询。

---- PowerBuilder 中 的 单行 编 辑 器SingleLineEdit 中 可 以 输 入 字 符, 但 它 没 有 在 输 入过 程 中 作 出 实 时 响 应 的 事 件, 为 了 能 够 对 输 入 的 数 据进 行 实 时 响 应, 我 们 必 须 利 用 其 他 的 对 象 的 事 件, 而窗 口(Window) 的Key 事 件 能 够 对 窗 口 内 的 键 盘 输 入 作 出 实 时响 应, 可 以 利 用 该 事 件 获 取 单 行 编 辑 器 的 内 容, 然 后对 数 据 窗 口 进 行 过 滤, 达 到 实 时 缩 小 查 询 范 围 的 目的。 在 测 试 过 程 中, 发 现 必 须 输 入 下 一 个 字 符 才 能 响应 当 前 的 过 滤, 如: 我 想 将 数 据 窗 口 过 滤 为 左 边 两 个字 符 为'02', 必 须 输 入'02x', 系 统 才 会 进 行 前 面 的 过 滤。为 了 能 够 真 正 做 到 实 时 响 应, 我 在 窗 口 对 象 中 另 外 定义 了 一 个 用 户 事 件user_reduce, 将 获 取 数 据 和 过 滤 的 代 码写 在 该 事 件 中, 然 后 在Key 事 件 中 写 入 代 码this.postevent("user_reduce"), 由 于postevent() 函 数 将 事 件 加 入 到 事 件 队 列 的 末 尾, 这 样系 统 在 响 应 输 入 的 操 作 以 后 再 进 行 该 事 件 的 处 理, 从而 实 现 了 数 据 窗 口 根 据 用 户 的 输 入 实 时 缩 小 查 询 范围 的 目 的。

---- 具 体 实 现 方 法如 下:

---- 设 数 据 库 中 有一 表 名 为pcode.dbf, 用 于 记 录 材 料 信 息, 其 字 段 描 述 如下:

---- 字 段 描 述 字 段名 字 段 类 型 长 度 格 式

---- 编 号 CODE CHAR 10 XX-XX-XXXX

---- 名 称 NAME VARCHAR 30

---- 型 号 规 格 MODEL VARCHAR 28

---- 单 位 UNIT VARCHAR 10

---- 假 设 你 在Application 的Open 事 件 中 已 经 写 入 连 接 该 数 据 库 的 代 码, 并 已 成 功连 接 数 据 库, 那 么 你 就 可 以 进 行 以 下 的 步 骤:

---- 1、 新 建 一 个 窗口 对 象, 将 它 保 存 为w_search, 在Application 的Open 事 件 中 加 入open(w_search) 代 码, 这 样 就 可 以 打 开 窗 口。

---- 2、 建 立 一 个datawindow,类 型 为Grid, 数 据 来 源 为 数 据 库 中 的pcode.dbf 表, 字 段 全选, 保 存 为dw_see;

---- 3、 在w_search 窗 口中 增 加 两 个 对 象 分 别 为 单 行 编 辑 器sle_1 和 数 据 窗 口dw_1,在dw_1 的 属 性 中 选 择 连 接 的datawindow 为dw_see, 在w_search 的open 事件 中 写 如 下 代 码:


connect using sqlca;
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.setrowfocusindicator(hand!) // 设 置 手 型 行 指 针

---- 3、 鼠 标 单 击w_search 窗 口 的 空 白 处, 单 击 菜 单Declare 下 的User event 菜 单 项, 在 最下 面 的 空 白 栏 中 输 入user_reduce, 按ok 钮 返 回。

---- 4、 鼠 标 在w_search 窗 口 的 空 白 处 单 击 右 键, 选 择 弹 出 菜 单 的script 项 进 入代 码 编 辑 窗, 在user_reduce 事 件 中 输 入 以 下 代 码:


string acode,code_filter
long acount
code_filter = ""
acode = trim(sle_1.text)
if len(acode) > 0 then
acount = len(acode)
code_filter = " left(code," + string(acount) + ") = '" ;
+ acode + "' "
dw_1.setfilter( code_filter)
dw_1.filter()
dw_1.setsort("code A")
dw_1.sort()
end if

---- 5、 在w_search 窗 口的key 事 件 中 输 入 如 下 代 码:

---- this.postevent("user_reduce")

---- 6、 保 存 并 运行。 则 数 据 窗 口 中 的 记 录 会 根 据 你 在 单 行 编 辑 器 中 的输 入 内 容 进 行 动 态 缩 小 范 围。

共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-12-22 23:00 , Processed in 0.037840 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表