毕业设计:两个数据窗口来源相同,点击数据窗口dw_1中某一行,却无法在dw_2中显示详细内容。dw_1只保留了关键字段,用于检索;dw_2用于显示全部内容.

fenfen8818 2009-06-05 08:00:14
现在补充毕业设计论文,开始以为是Retrieved事件的问题,现在还是存在一个问题:dw_1和dw_2的数据库来源相同,dw_1只保留了

关键字段,用于检索;dw_2采用 free形式显示全部内容.

点击数据窗口dw_1中某一行,却无法在dw_2中显示详细内容。单击dw_1只能显示第一条的记录.

在dw_1的clicked事件中加入以下代码:

string ls_bh

this.selectrow(0,false) //取消选择
if row < 1 then return //没选中行则返回
this.selectrow(row,true) //选择选中的行
il_row = row
ls_bh = this.getitemstring(il_row,"客户编号"
dw_2.retrieve(ls_bh) //检索出数据

另外 在dw_1的retrieveEnd事件中加入以下代码:

string ls_bh

this.selectrow(0,false) //取消选择
if rowcount < 1 then return //没有行则返回
this.selectrow(1,true) //选择第一行
il_row = 1
ls_bh = this.getitemstring(il_row,"客户编号")
dw_2.retrieve(ls_bh) //检索出数据


il_row是当前行,integr类型.客户编号是客户清单的主键

希望朋友们帮我看看,要不行,就得将论文简单化处理了
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
永生天地 2009-06-06
  • 打赏
  • 举报
回复
下面解决80%的问题
在dw_1 的rowfocuschanged 事件这样写:
string ls_bh
if currentrow <= 0 then return
ls_bh = this.getitemstring(currentrow, "客户编号")
dw_2.retrieve(ls_bh)
waimianxiayu 2009-06-06
  • 打赏
  • 举报
回复
this.selectrow(0,false) //取消选择
if row < 1 then return //没选中行则返回
this.selectrow(row,true) //选择选中的行
il_row = row
ls_bh = this.getitemstring(il_row,"客户编号"
dw_2.retrieve(ls_bh) //检索出数据
放在dw_1 的rowfocuschanged 事件里
waimianxiayu 2009-06-06
  • 打赏
  • 举报
回复
显示第一条的原因是你没有改变行号,单击时先获取当前行的行号,再获取该行主键传回去dw_2检索就好了.
newease 2009-06-06
  • 打赏
  • 举报
回复
我数据窗口 数据共享 和两表关联 的示例,如果需要可以留下邮箱

fenfen8818 2009-06-06
  • 打赏
  • 举报
回复
也非常感谢楼上所有的朋友,现在赶毕设,不能一一检验其他的代码,所以分数要分散一点. 再次表示感谢!
fenfen8818 2009-06-06
  • 打赏
  • 举报
回复
xys_777 完全正确,非常感谢!论文不用改了
风_雨_晴 2009-06-06
  • 打赏
  • 举报
回复
来源相同用共享数据窗口好,要求两个datawindow的字段顺序一样
dw_1.Retrieve()
dw_1.ShareData(dw_2)

dw_1的rowfocuschanged里
IF currentrow < 1 THEN RETURN
dw_2.ScrollToRow(currentrow)
WorldMobile 2009-06-05
  • 打赏
  • 举报
回复
不需要在clicked里写代码,如果用户用上下键操作的话,就会有问题,

建议在rowfocuschanged事件里写代码

string ls_bh
if currentrow <= 0 then return
this.setredraw(false)
this.selectrow(0, false)
this.selectrow(currentrow, true)
ls_bh = this.getitemstring(currentrow, "客户编号")
messagebox('', ls_bh)
dw_2.retrieve(ls_bh)

如果检索不出数据来的话,问题可以出在:1.数据窗口里的列名不对

2.第二个数据窗口里的参数不对

如果搞不定,加我QQ,帮你看看

611

社区成员

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

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