关于retrieve问题!!

kaiwen_lv 2002-05-31 10:17:05
我有个数据窗口,因为数据太多,我想分开显示,每次显示2000条数据,我已经可以每次显示2000条,但是,没办法停止,我作了一个按钮,我希望点一下这个按钮就显示2000条,然后停止,再点一下这个按钮就显示下个2000条,下面是我每次显示2000条的程序,我想知道怎么控制显示停止和继续!
long li_start,li_end, ll_max;

dw_1.SetTransObject(SQLCA)
SELECT max(a001) INTO :ll_max FROM std using SQLCA;
for li_start = 1 to ll_max step 2000
li_end = li_start + 2000 -1
dw_1.retrieve(li_start,li_end)
next

还有个问题就是,在dw_1中显示出来的数据,我希望update到dw_2中去,但是由于dw_1中的记录的字段比dw_2中的长,所以,每条记录我都要用substring截取,然后insert到dw_2中去,这就需要每次处理一条记录,不知道如何处理??程序如何实现?
...全文
85 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmsofts 2002-06-05
  • 打赏
  • 举报
回复
gz
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
dajianshi(大剑师)::谢谢了,第一个问题已经解决了,非常感谢。

等我第二个问题解决了,马上揭帖!!
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
我在dw_1中显示的数据,现在我要将这些数据copy到dw_2中去,但是dw_1中数据的字段和dw_2中的字段长度不同,比如我有个字段dw_1中是a100 char 100 在dw_2中a100 char 40,那么这就要将dw_1中的a100截取到40,然后copy到dw_2中,这个如何实现,是不是每次取一列,然后处理,然后提交,不知道如何实现?
suziniren 2002-05-31
  • 打赏
  • 举报
回复
第一个问题如果那样做的话数据库中的每条记录就必需有一个序号字段这样就可以进行数据的刷新了
第二个问题可以用一个FOR语句,从DW——1中读取每一个记录中的数据,进行要应的处理后,将记录数据插好DW——2对应的表中,然后进行DW——2的数据刷新即可。。。。。
hycao 2002-05-31
  • 打赏
  • 举报
回复
每次显示固定的记录数可以在数据窗口的retrieverow中写如下代码:
if row = 2000 then
return 1
end if
剩下的工作就是想办法控制每次从哪条记录开始显示,这样比你要控制头尾应该方便一些。
佣工7001 2002-05-31
  • 打赏
  • 举报
回复
你没有让他停,他会停吗?!
声明实例变量iv_nowStart=1;
在你的按钮中写:
if iv_nowStart<ll_max then
iv_nowStart += 2000;
dw_1.retrieve(iv_nowStart,iv_nowStart+2000);
else
Beep(1);
end if
zhanwei 2002-05-31
  • 打赏
  • 举报
回复
pb的例子看一下:
w_cancel_retrieval

//Retrieveend script for dw_10D
if ib_cancelbut_open then
0Aib_cancelbut_open = false
end if

Close(w_cancel_button)
end on

//Retrieverow script for dw_10D
// ScrollNextRow displays rows as they are retrieved
this.ScrollNextRow( )

// Display a running count of rows retrieved
if IsValid(w_cancel_button) then
w_cancel_button.st_count.text = String(This.RowCount( ))
0Aend if

// If the Cancel button has been clicked, set the action code to
// terminate the retrieval. Note: It is the SetActionCode function
// that actually terminates the retrieve
if ib_cancelbut_open = false then
return 1
end if

//Retrievestart script for dw_1

// Display the cancel window at start of retrieval. This window
// contains a Cancel button, which sets the instance
// ib_cancelbut_open false, when clicked.
ib_cancelbut_open = true

Open(w_cancel_button)


end on

===================================================
詹维(法宏)
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
long li_start,li_end, ll_max;

dw_1.SetTransObject(SQLCA)
SELECT max(a001) INTO :ll_max FROM std using SQLCA;
for li_start = 1 to ll_max step 2000
li_end = li_start + 2000 -1
dw_1.retrieve(li_start,li_end)
next
这段代码我写在了一个commandbutton上面,如何用一个commanbutton控制,停止和继续
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
好像都不行啊,不知道是我用的不对还是什么,还是循环,没有办法停下来
aqua_w 2002-05-31
  • 打赏
  • 举报
回复
在数据窗口中 ,ROW-->ROW OPTIONS-->ROWS AS NEEDED
不是更简单
scorcer 2002-05-31
  • 打赏
  • 举报
回复
for语句后加上
YIELD()
pei 2002-05-31
  • 打赏
  • 举报
回复
要用到数据窗口的retrieve事件和dbcancel() 函数
if row=2000 then dw_1.dbcancel()
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
doer_ljy(可战) 我就是这么作的啊,但是这样没有办法停下来啊,我在数据窗口中定义了两个参数,al_start 和al_end啊,你看我程序里面就有dw_1.retrieve(li_start,li_end),但是这样没有办法停下来,他一直循环到完啊。

第二个问题的意思是:我在dw_1中显示了2000条数据,现在我要将这些数据copy到dw_2中去,但是dw_1中数据的字段和dw_2中的字段长度不同,比如我有个字段dw_1中是a100 char 100 在dw_2中a100 char 40,那么这就要将dw_1中的a100截取到40,然后copy到dw_2中。
doer_ljy 2002-05-31
  • 打赏
  • 举报
回复
每次2000条可以用参数传递的方法,每2000条retrieve一次
SELECT * FROM ****
WHERE ROWNUM > :al_start AND ROWNUM <:al_end
每点一次那个按钮,给al_start和al_end各加2000不就行了吗?
第二个问题没看明白
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
唉,为什么没有人回答列!!惨啊!!各位帮忙啊!
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
lmby(鹿门布衣) :你好,有见面了,哈哈,

用rowscopy不行啊,我的字段要进行处理的,每个字段处理完了以后就setitem给dw_2对应的字段,现在我都作了,但是每次dw_2 update不成功,不知道为什么??就是我提交的记录没有办法保存到数据库中!
lmby 2002-05-31
  • 打赏
  • 举报
回复
你直接用rowscopy()函数
kaiwen_lv 2002-05-31
  • 打赏
  • 举报
回复
请教第二个问题:我在dw_1中显示的数据,现在我要将这些数据copy到dw_2中去,但是dw_1中数据的字段和dw_2中的字段长度不同,比如我有个字段dw_1中是a100 char 100 在dw_2中a100 char 40,那么这就要将dw_1中的a100截取到40,然后copy到dw_2中,这个如何实现,是不是每次取一列,然后处理,然后提交,不知道如何实现?

1,078

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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