在-PB-中-巧-用-下-拉-式-数-据-窗-口.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PB
- 资源描述:
-
在 PB 中 巧 用 下 拉 式 数 据 窗 口 (深圳:独孤求败 2003-05-15) PowerBuilder 作 为 目 前 比 较 流 行 的 一 种 开 发 工 具, 有 其 独 到 之 处, 那 就 是 数 据 窗 口 (DataWindow) 。可 以 说, 数 据 窗 口 是 PowerBuilder 的 核 心, 在 对 数 据 库 的 开 发 过 程 中, 无 论 是 录 入、 查 询、 统 计 还 是 报 表, 都 离 不 开 数 据 窗 口。 但 是, 除 了 数 据 窗 口,PB 还 提 供 了 下 拉 式 数 据 窗 口 (DropDown DataWindow) , 下 拉 式 数 据 窗 口 的 使 用, 使数 据 窗 口 更 灵 活, 更 方 便, 下 面 举 例 介 绍 在 数 据 窗 口 中 使 用 下 拉 式 数 据 窗 口 的 一 些 技 巧。 在 用 数 据 窗 口 作 数 据 录 入 时, 经 常 用 到 代 码 录 入, 即 对 经 常 输 入 的 某 些 值 设 置 代 码, 录 入 时 直 接 录 入 代 码 即 可。 例 如, 有 两 个 表, 主 表 main_table 和 代 码 表 code_table, 结 构 如 下: main_table 字 段 名 类 型 长 度 描 述 id integer 身 份 号 name char 8 姓 名 sex char 4 性 别 city Varchar 30 城 市 unit Varchar 40 单 位 code_table 字 段 名 类 型 长 度 描 述 code char 4 代 码 data char 40 内 容 ----下 面, 详 细 讨 论 如 何 使 用 下 拉 式 数 据 窗 口: 静 态 设 计 下 拉 式 数 据 窗 口 ----首 先 对 主 表 和 代 码 表 设 计 两 个 数 据 窗 口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 字 段; 在Data Column( 数 据 列) 下 拉 框 中 选 择data 字 段 , 这 表 示 显 示 的 是code 字 段 的 内 容, 而 实 际 存 于 表main_table 中 的 是data 字 段 的 内 容。 至 此, 数 据 窗 口 设 计 完 毕。(如 果 unit 中 的 内 容 都 能 在 data 中 找 到 , 则 其 类 型 和 长 度 可 设 置 为 char 和 4。) ----设 计 完 数 据 窗 口 后, 需 要 建 立 一 个 数 据 录 入 的 窗 口(window), 名 字 为w_input, 在 窗 口w_input 上 建 立 一 个 数 据 窗 口 的 控 件dw_1, 其 属 性DataWindow Object Name 为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 事 件 中, 加 入 如 下 的 代 码: String ls_sql Integer rtncode DataWindowChild field_child //dwo 为 该 事 件 的 参 数, 其 name 属 性 的 值 表 示 获 得 焦 点 的 字 段 名 Choose Case lower(dwo.name) Case 'city' //city 字 段 获 得 焦 点 //获 得 city 字 段 下 拉 数 据 窗 口 的 句 柄 rtncode = dw_1.GetChild("city",field_child) If rtncode = -1 Then MessageBox( "Error", "Not a DataWindowChild") //设 置 事 务 对 象 field_child.SetTransObject(SQLCA) //获 得 下 拉 数 据 窗 口 的SQL 语 句 ls_sql = field_child.GetSQLSelect() //重 新 设 置SQL 语 句, 加 上Where 条 件 ls_sql = ls_sql + " Where field = '" + dwo.name + "'" field_child.SetSQLSelect(ls_sql) //取 得 满 足 条 件 的 数 据 field_child.Retrieve() Case 'unit' //unit 字 段 获 得 焦 点 // 获 得unit 字 段 下 拉 数 据 窗 口 的 句 柄 rtncode = dw_1.GetChild("unit",field_child) ......( 此 处 编 程 同 上 一 样) End Choose 动 态 设 置 取 值 参 数 ----上 例 中, 是 采 用 动 态 改 变SQL 语 句 实 现 的, 其 实, 下 拉 数 据 窗 口 有 一 种 更 简 单 的 方 法 就 是 设 置 取 值 参 数 (Retrieval Arguments) 但 这 种 方 法 适 合 从 固 定 表 中 取 数 据, 如 果 是 从 动 态 表 (即 表 名 不 固 定) 中 取 数 据, 则 只 能 通 过 改 变SQL 语 句 来 实 现。 ----修 改 数 据 窗 口 dw_code, 在 图 形 方 式 下, 选 择 Design 菜 单 下 的 Retrieval Arguments..., 设 置 取 值 参 数 的 类 型 为 String, 名 字 可 任 取, 假 设 为 field_data, 然 后 在 窗 口 下 面 的 Where 标 签 中 选 择 Column 为 "code_table.field" , Operator 为 " =" , value 为 取 值 参 数 的 值: field_data (变 量 名 前 加 冒 号 表 示 该 变 量 的 值), 至 此, 取 值 参 数 设 置 完 毕。 同 上 例, 也 需 要 在 窗 口 w_input 中 的 数 据 窗 口 控 件dw_1 中 的ItemFocusChanged 事 件 中 进 行 如 下 的 编 程: Integer rtncode DataWindowChild field_child //dwo 为 该 事 件 的 参 数, 其name 属 性 的 值 表 示 获 得 焦 点 的 字 段 名 Choose Case lower(dwo.name) Case 'city' //city 字 段 获 得 焦 点 //获 得city 字 段 下 拉 数 据 窗 口 的 句 柄 rtncode = dw_1.GetChild("city",field_child) If rtncode = -1 Then MessageBox( "Error", "Not a DataWindowChild") //设 置 事 务 对 象 field_child.SetTransObject(SQLCA) //利 用 取 值 参 数 取 得 满 足 条 件 的 数 据, 如 果 没 有 数 据, 则 插 入 一 空 记 录,// 否 则 系 统 会 提 示 一 个 英 文 对 话 框,要 求 输 入 取 值 参 数 的 值。 If field_child.Retrieve(dwo.name) < 1 Then field_child.InsertRow(0) Case 'unit' //unit 字 段 获 得 焦 点 //获 得unit 字 段 下 拉 数 据 窗 口 的 句 柄 rtncode="dw_1.GetChild("unit",field_child)" ......( 此 处 编 程 同 上 一 样) End Choose展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




在-PB-中-巧-用-下-拉-式-数-据-窗-口.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/7164740.html