好好看看实例吧,不要完全照抄写,自己动手修改!
在数据窗口itemchanged 事件中写脚本:
AcceptText()
CHOOSE CASE dwo.name
CASE "zb"
string ls_zb,ls_filter
ls_zb=getitemstring(row,"zb")
//定义一个子数据窗口
DatawindowChild ldwc_xhdw
int li_rtn
//得到子数据窗口
if dw_1.GetChild("xhdw",ldwc_xhdw) = -1 then
MessageBox("提示","子数据窗口没有找到!")
End if
ldwc_xhdw.settransobject(sqlca)
if ls_zb <> "" and not isnull(ls_zb) then
sle_1.text=ls_zb
ls_filter ="zb="+"'"+ls_zb+"'"
end if
ldwc_xhdw.SetFilter(ls_filter)
ldwc_xhdw.Filter()
CASE "xhdw"
string ls_zb2
long ll_row
//定义一个子数据窗口
DatawindowChild ldwc_xhdw2
//得到子数据窗口
if dw_1.GetChild("xhdw",ldwc_xhdw2) = -1 then
MessageBox("提示","子数据窗口没有找到!")
End if
ldwc_xhdw2.settransobject(sqlca)
ll_row=ldwc_xhdw2.getrow()
ls_zb2=ldwc_xhdw2.getitemstring(ll_row,"zb")
setitem(row,"zb",ls_zb2)
CASE "ghdw"
//string ls_lb
long ll_row1
//定义一个子数据窗口
DatawindowChild ldwc_ghdw2
//得到子数据窗口
if dw_1.GetChild("ghdw",ldwc_ghdw2) = -1 then
MessageBox("提示","子数据窗口没有找到!")
End if
ldwc_ghdw2.settransobject(sqlca)
ll_row1=ldwc_ghdw2.getrow()
gs_lb=ldwc_ghdw2.getitemstring(ll_row1,"lb")
if gs_lb <> "1" then
gs_lb = "2"
end if
if dw_2.getitemstring(dw_2.getrow(),"lb")="" or isnull &
(dw_2.getitemstring (dw_2.getrow(),"lb")) then
dw_2.setitem(dw_2.getrow(),"lb",gs_lb)
end if
END CHOOSE
if dw_list.getChild('s_material_guige_no',idddw_guige) = -1 then
messagebox('系统提示','Not a DataWindowChild!')
else
idddw_guige.setfilter("s_guige_no like '" + ls_no + "%'")
idddw_guige.filter()
end if
choose case dwo.name
case 'clmc'
vclmc=data
this.getchild('bpdxh',dw_child) //传递子数据窗口对象给变量
dw_child.settransobject(sqlca)
vsql=dw_child.GetSQLSelect() //得到子数据窗口的SQL语句
ls_filter=vsql+"where clmc='"+vclmc+"'" //重置子数据窗口的SQL语句
if dw_child.SetSQLSelect(ls_filter)=-1 then //检查SQL语句
messagebox('警告','检索失败!',stopsign!)
return
else
dw_child.Settransobject(sqlca) //执行SQL语句
dw_child.Retrieve()
dw_child.SetSQLSelect(vsql) //重置SQL,恢复原来状态
end if
end choose
很是感谢大家帮助,可是问题还没解决!
现在我遇到的情况是这样的:
方案一:
choose case dwo.name
case 'clmc'
vclmc=data
this.getchild('bpdxh',bpd_dw)
bpd_dw.settransobject(sqlca)
bpd_dw.setfilter("clmc='"+vclmc+"'")
bpd_dw.filter()
end choose
结果是bpdxh所对应的下拉数据窗口数据没有任何变化,就像setfilter没起作用。
方案二:
choose case dwo.name
case 'clmc'
vclmc=data
this.getchild('bpdxh',bpd_dw)
bpd_dw.settransobject(sqlca)
bpd_dw.retireve(vclmc)
end choose
结果是,因为要在bpdxh对应窗口中加上参数,导致改进入界面时系统总会弹出参数询问窗口。
choose case dwo.name
case 'clmc'
vclmc=data
this.getchild('bpdxh',bpd_dw)
bpd_dw.settransobject(sqlca)
bpd_dw.setfilter("clmc='"+vclmc+"'")
bpd_dw.filter()
end choose
我是这么写的!可是不行!