在datawindow中怎样根据一个字段的值来动态更换另一个字段的dddw?

madking 2003-04-11 10:16:10
已经预设了一些style name,能否动态更改?
...全文
95 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsycat 2003-04-11
  • 打赏
  • 举报
回复
用GetChild()函数

string user_accounts,energy_type
integer rtncode

if dwo.name = 'parent_watch_code' then
user_accounts = dw_5.getitemstring(dw_5.getrow(),'parent_user_accounts')
energy_type = dw_5.getitemstring(dw_5.getrow(),'energy_type')
rtncode = dw_5.GetChild('parent_watch_code',state_child)
IF rtncode = -1 THEN MessageBox("错误", "传递参数错误!")

CONNECT USING SQLCA;

state_child.SetTransObject(SQLCA)
state_child.Retrieve(user_accounts,energy_type)
end if

madking 2003-04-11
  • 打赏
  • 举报
回复
怎样改变child呢?
shahand 2003-04-11
  • 打赏
  • 举报
回复
itemchange event:
if dwo.name = .....
..getchild()..
//modify
//or filter
madking 2003-04-11
  • 打赏
  • 举报
回复
弹出窗口用户操作太麻烦了,因为有好几个字段要更改。
dddw的可选项我们是统一维护的

//翻译的话,可以用联合报表(union)建立dddw

详细解释一下?
prain2003 2003-04-11
  • 打赏
  • 举报
回复
我用的是弹出窗口实现的,翻译的话,可以用联合报表(union)建立dddw
madking 2003-04-11
  • 打赏
  • 举报
回复
拿实际情况来说明吧
一个资产购置计划,资产包括电表、互感器等。
每条记录里有一个表类型字段,电表和互感器对应的表类型不同,用户可以选择该条记录是电表还是互感器,怎么改变表类型的可选项?
如果有好的实现方法,烦请说明,谢谢!
prain2003 2003-04-11
  • 打赏
  • 举报
回复
你想做什么,可以不用那么复杂的方法,也可以实现类似的功能
madking 2003-04-11
  • 打赏
  • 举报
回复
i see,结帖了。
andyzq 2003-04-11
  • 打赏
  • 举报
回复
你设置了style name,以下语句可以得到style name的名称,但是仍然需要指定displaycolumn
和datacolumn的值

string ls_dddw
ls_dddw = dw_1.describe("code.dddw.name")
messagebox('',ls_dddw)
madking 2003-04-11
  • 打赏
  • 举报
回复
呵呵,我试过了,这种方法可以。不过要求动态改变数据源的不同dddw的数据结构一致。
能不能直接改变style name属性呢?因为我们已经预设好了一些dddw。谢谢!

还有一个弊端,就是dddw的数据源一改变,所有行的dddw就都改变了。这也是没有办法的事,不知道对于这种问题有没有更好的处理方法。
andyzq 2003-04-11
  • 打赏
  • 举报
回复
更正:
在itemchanged事件中写

datawindowchild ldwc_1

if dwo.name = '那个字段' then
if data = '电表' then
dw_1.object.字段名.dddw.name = "dddw_电表"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if
end if



if dwo.name = '那个字段' then
if data = '互感' then
dw_1.object.字段名.dddw.name = "dddw_互感"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if
end if
andyzq 2003-04-11
  • 打赏
  • 举报
回复
在itemchanged事件中写

datawindowchild ldwc_1

if dwo.name = '电表' then
dw_1.object.字段名.dddw.name = "dddw_电表"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if


if dwo.name = '互感' then
dw_1.object.字段名.dddw.name = "dddw_互感"
dw_1.object.字段名.dddw.displaycolumn = "dddw中的显示字段名"
dw_1.object.字段名.dddw.datacolumn = "dddw中的数据字段名"
dw_1.object.字段名.dddw.AllowEdit = 'no'
dw_1.getchild('字段名', ldwc_1)
ldwc_1.settransobject(sqlca)
ldwc_1.retrieve()
end if
madking 2003-04-11
  • 打赏
  • 举报
回复
老兄,我要改变的是datawindowchild的数据源啊!好像不能用dataobject吧?
lsycat 2003-04-11
  • 打赏
  • 举报
回复
dw_2.dataobject = 'd_jxf_dept_print_new2'
dw_2.SetTransObject(SQLCA)
madking 2003-04-11
  • 打赏
  • 举报
回复
我是要改变dddw的数据源,而不只是过滤一下。有办法吗?

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧