注册 登录
编程论坛 PowerBuilder

求助!数据窗口问题

fredlifan 发布于 2007-08-25 19:21, 1931 次点击

我是PB初学者,想做一个窗口,其数据窗口控件dw_1中是显示日期的数据,数据窗口控件dw_2中希望根据dw_1选中行的数据进行动态显示,如选中2007-1-1,则只显示这一天的相关数据,在dw_2的数据窗口对象中已创建了检索参数":when",Type为date。编写dw_1的RowFocusChanged事件如下
dw_1.setcolumn("date")
if dw_1.gettext()<>"" then
dw_2.retrieve(dw_1.gettext())
end if
但是运行时dw_2不能显示,请各位大侠帮帮忙。

8 回复
#2
whiteyl2007-08-26 00:58
先检查dw_2.retrieve()的返回值,最后中断到RocusChanged,看返回结果.
#3
fredlifan2007-08-26 11:50
这个楼上是什么意思能不能说清楚点,我对PB还不是很熟悉。
另外我用这个方法做的另外一个窗口则可以实现功能,那个窗口是根据dw_1中选定行的“id”动态显示,id是varchar类型,我觉得是不是dw_1.gettext()不能获取date数据,不知道是不是这样。
#4
tangchangxin2007-08-27 10:25
dw_2那边写错了.自己检查一下吧
#5
fengkun12272007-08-27 12:55
这个很好实现的,你可以W_2的检索参数设置为日期,然后在W_1的写一个获得日期的程序
long ll_spnm
//string ll_spnm
//获取行号
ll_spnm=getrow(dw_2)
selectrow(dw_2,0,false)
selectrow(dw_2,ll_spnm,true)
//获取第一例的值
gs_id_1=dw_2.getitemstring(ll_spnm,1)
gs_id_2=dw_2.getitemstring(ll_spnm,1)
if gs_id_1='' and gs_id_2='' then
return
else
dw_1.settransobject(sqlca)
dw_1.retrieve(gs_id_1,gs_id_2)
end if


这样ok.
#6
fredlifan2007-08-27 14:48
这个问题我已经解决了,方法是编写dw_1的clicked事件
IF<=0 then return
dw_2.retrieve(dw_1.getitemdate(row,"date"))

但不像4楼说的,我之前这样编写的程序用于根据“id”动态显示是完全可以的,没看出dw_2那有什么问题。我用messagebox("提示",dw_1.gettext())检查时发现没有数据显示,所以猜测是gettext用法问题,还希望高手解答
#7
sam20802007-08-29 16:49
取数据窗的数据用 getitem来取,不同的类型getitem后面的写法也不同。。。看下帮助就知道了
或者可以加个 刷新 按钮,填写完DW1中的日期后,点刷新按钮
ldt_time
ldt_time = dw_1.GetItemDateTime(dw_1.GetRow(),'date')
dw_2.SetTransObject(Sqcla)
dw_2.Retrieve(ldt_time)
#8
ugly9278462007-09-01 11:52
#9
柳婕2007-09-01 14:58
呵呵,我是新手,看了很多天的数据窗口了,还是有很多不明白的地方,以后希望各位大虾多多指教哦!
1