hur.cn - 华软网

 热门搜索

怎么实现两个下拉数据窗口之间的通讯????在线等呀拜托拉!!

  作者:未知    来源:网络    更新时间:2017/12/5
我做了一个DW_1,在DW_1中关联的查询中的有些列我用的是下拉数据窗口来实现动态,我有一个问题是,当我添加一个记录的时候,,我先选定了前面的一个列的数据时,我要后面的下拉数据窗口的数据要根据前一列选顶的数据来显示相应的内容,比如说,我前一个选定了书的名称,后面的那列的下拉数据窗口中显示的数据中只能是这本书的章节,要怎么做???????详细点,拜托拉!!!!!!!!
------华软网友回答------
filter()
------华软网友回复------
http://community.csdn.net/Expert/topic/3949/3949665.xml?temp=.5724604
去这里看看,和你一样的问题,二级联动。
------华软网友回复------
我有个方法:课程表A(AID,ANAME)章程表B(BID,BNAME)
例如:AID  ANAME   BID AID  BNAME
      1    C++     11   1   C++语言基础
                   12   1   c++语法
                   13   1   C++结构篇
      2    pb      21   2   pb基础
                   22   2   pb语法
                   23   2   pb结构篇

你要看懂上面的表与表之间的关系AID包含BID的内容;
你现作一个简单的关于A表的DDLB的SELECTIONCHANGED的事件里面写代码代码是把当前的选择的值
(index),你在作B表的DDLB控件的时候,让它带参数进行数据的retrieve,其中的参数就是从A表里面
传出来的INDEX。你在A的DDLB中的SELECTIONCHANGED的事件中写入:DW_B.RETRIEVE(INDEX),把B表的
DDLB进行数据重新读取就可以了。

------华软网友回复------
我昨晚给你写了一个你要求的“二级联动”的例子。我写了两种方法,你选择一种,推荐使用第一种。
问题一:在数据窗口对象中实现二级联动效果。
数据窗口控件的名称为dw_1
列dept 列staffroom
二列的Edit编辑模式都是下拉数据窗口(DropDownDataWindow)方式。分别对应着d_dept和d_staffroom两个数据窗口对象。

d_dept 中选择表department,其中含有列(Int)dept_id,(String)dept_name
d_staffroom 中选择表staffroom,其中含有列(Int)staffroom_id,(Sting)staffroom_name,(Int)dept_id

d_staffrooom设置了检索参数 dept_id
select staffroom_id,staffroom_name 
from staffroom
where dept_id = :dept_id
using sqlca;

数据窗口对象中的dept列选择了d_dept数据窗口对象,值:dept_id,显示值:dept_name
数据窗口对象中的staffroom列选择了d_staffroom数据窗口对象,值:staffroom_id,显示值:staffroom_name

目的,选择dept列得到dept_id,当作列staffroom的动态参数

在数据窗口控件dw_1的Itemchanged事件中写上如下脚本:
String ls_columnname
Integer li_deptid,li_code

DataWindowchild staff_child

ls_columnname = dw_1.GetColumnname()
if ls_columnname = "dept" then
  li_deptid = dw_1.getItemNumber(row,dept)
  li_code = dw_1.GetChild("staffroom",staff_child)
  if li_code = -1 then Messagebox("错误","不是子数据窗口")
  CONNECT USING SQLCA;
  staff_child.SetTransObject(SQLCA)
  staff_child.Retrieve(li_deptid)
end if

问题二:实现窗口中两个ddlb下拉列表框(DropDownListBox)实现二级联动效果。
在窗口中声明实例变量 Integer ii_deptid
首先需要将数据库表中的数据检索出来逐条插入到ddlb_dept控件中。使用游标方式。
在窗口的open事件中写上如下脚本:
Declare dept Cursor for
select detp_name
from department
using sqlca;
open dept;
fetch dept into :dept_name;
while sqlca.sqlcode = 0
  ddlb_dept.Additem(dept_name)
  fetch dept into :dept_name;
loop
close dept;

第二步:在ddlb_dept的SelectionChanged事件中写上:
String ls_deptname

ls_deptname = this.text
select dept_id
into :ii_deptid
from department
where dept_name = ls_deptname
using sqlca;
 
第三步:在ddlb_staff的GetFocus事件中写上:
Declare staff Cursor for
select staffroom_name
from staffroom
where dept_id = ii_deptid
using sqlca;
open staff;
fetch staff into :staffroom_name;
while sqlca.sqlcode = 0
  ddlb_staff.Additem(staffroom_name)
  fetch staff into :staffroom_name;
loop
close staff;
------华软网友回复------
别忘了揭帖啊!哈哈      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。