中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
也谈“PB中相关联下拉数据窗口的实现”(jqz1225原创)
作者:未知 时间:2005-07-27 23:41 出处:CSDN 责编:chinaitpower
              摘要:也谈“PB中相关联下拉数据窗口的实现”(jqz1225原创)

    “PB中相关联下拉数据窗口的实现”中的原文:许多资料称设置检索参数是最简单、最方便的有效解决方法,也提出了几种隐藏系统自动弹出的“Specify Retrieval”对话框的方法。但令人遗憾的是本人竭尽所能也未能如愿(主要是无法隐藏系统自动弹出的“Specify Retrieval”对话框)。

    看了之后,觉得怎么可能,我是个pb的初学者,但我也不相信无法隐藏统自动弹出的“Specify Retrieval”对话框,于是用原文章的三张表试了试。

     一、建立datawindow 

    1) d_dept: 

        SELECT "dept"."dept_id",  "dept"."dept_name"   FROM "dept"  

    2) d_unit:

        SELECT "unit"."unit_id",  
         "unit"."unit_name",  
         "unit"."dept_id" 
        FROM "unit" 
        WHERE "unit"."dept_id" = :as_dept_id     
        此数据窗口使用了retrieval argument: "as_dept_id"
  

 3) d_feedata:

  SELECT "feedata"."dept_id",  
         "feedata"."unit_id",  
         "feedata"."num" 
    FROM "feedata"  

此数据窗口的

dept_id字段:Edit Style: Dropdown datawindow, 对应的datawindow为d_dept

unit_id字段:Edit Style: Dropdown datawindow, 对应的datawindow为d_unit, 其AutoRetrieve设为False

二、建立窗口w_main

1. w_main的open事件:

datawindowchild child_dept, child_unit

dw_1.settransobject(sqlca)
dw_1.retrieve()
//
if dw_1.getchild( 'dept_id', child_dept)<0 then
 messagebox('警告','数据字典有误')
 close(this)
 return
end if

child_dept.settransobject(sqlca)
child_dept.retrieve()
//
if dw_1.getchild( 'unit_id', child_unit)<0 then
 messagebox('警告','数据字典有误')
 close(this)
 return
end if

child_unit.settransobject(sqlca)

// child_unit.retrieve()  //此句不能写,否则retrieval argument窗口就出来了

2. dw_1的itemchanged事件:

datawindowchild child_unit

if dwo.name = 'dept_id' then   //dept_id字段的值发生改变
 if dw_1.getchild( 'unit_id', child_unit)< 0 then
  messagebox('警告','数据字典有误')
  return
 end if
 child_unit.retrieve(data)  // data即为dept_id当前的值,此时才带参数值调用retrieve
end if

三、结论

上文中用黑体标出的三个地方是关键。

到此问题全部解决,感觉一切也非常完美,并不需要用原文那么复杂的方法。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有