hur.cn - 华软网

 热门搜索

高手救命啊!如何实现定时从表中读取数据,一次显示10条数据?

  作者:未知    来源:网络    更新时间:2018/5/16
如何实现定时从表中读取数据,一次显示10条数据?
比如:
一个表有100条数据
第一次显示1-10条
第二次显示10-20条
第三次显示20-30条....
.
.
.
.
的十次显示90-100条
然后在循环

------华软网友回答------
在DW里的retrieverow事件里写代码
判断当n整除10时暂停3秒

if mod(row,10) = 0 then
   sleep(2)
   return 0
end if
------华软网友回复------
to: j9dai(DoItNow) 
这位高手能写的详细些吗?
谢谢了!
------华软网友回复------
时间匆忙, 大概意思是 先做一个DATASTORE (DS_1)用来检索全部数据, 放一个DW_1来显示数据.
本人在PB9下调试通过


long i,n,l

ds_1.retrieve()
n=ds_1.rowcount()
for i=1 to n 
       yield()
       if mod(i,10)=1 and i>10 then
    sleep(5)
       dw_1.reset()
    end if
 l=dw_1.insertrow(0)
 dw_1.object.a[l]=ds_1.object.a[i]  //可放置你要显示的字段,此处可用rowscopy( )
                                             //来做,但没细想,你自己试验吧!
next

------华软网友回复------
用楼上的方法可以,先把数据取到数据存储中,然后用定时器来解决读数据的问题。
------华软网友回复------
从ds_1到dw_1的时候可以用rowscopy,这样方便多了
------华软网友回复------
用sql也可以实现

------华软网友回复------
不行啊!
在w_main的open里事件写吗?
------华软网友回复------
加我吧,我传例程给你  qq 14661424
------华软网友回复------
我觉得这种情况,可以用游标解决. 
游标有fetch next fetch last 语句,正好适用于这种情况. 向下取的时候用个循环fetch next 10次就行了 sql server 与 sybase 的数据库都支持 fetch next/last 语句的
------华软网友回复------
我只得到了最后10条数据啊!
请高手帮忙啊!
谢谢!
qq:350110906
------华软网友回复------
retrieverow 来处理
不过可以用假象蒙混的

方法1:
定义实例变量i,il_cnt,数据窗口加计算列rowno,表达式为getrow(),是否隐藏由你自定
数据窗口定义自定义事件ue_shownext(i)
//
if i<1 then i=10
dw_1.setfilter("rowno<="+string(i))
dw_1.filter()
if i<il_cnt then i=i+10


retrieve前,可以写在你的open里:

dw_1.reset()
dw_1.setfilter('')
dw_1.filter()
i=10
dw_1.setredraw(false)
il_cnt=dw_1.retrieve()
dw_1.event ue_shownext(i)//这一句先注释,等写完了自定义事件再去掉注释
dw_1.setredraw(true)
//在触发显示下一行数据的地方写
dw_1.event ue_shownext(i)




方法2:不用做计算列,直接在filter里使用表达式
dw_1.setredraw(false)

dw_1.retrieve()
dw_1.setfilter('getrow()<=10')
dw_1.filter()
dw_1.dw_1.setredraw(true)

再显示下一个10行处写
dw_1.setfilter('getrow()<='+string(dw_1.rowcount()+10))
dw_1.filter()

------华软网友回复------
如果想定时触发,窗口timer里调用dw_1.event ue_shownext()就行了
如果想显示全部数据后下一次再从10开始显示,那么在shownext()增加判断
if i>= dw_1.rowcount() then
   i=10//i复位
   //重新读取数据
   dw_1.setredraw(false)
   dw_1.setfilter('getrow()<=10')
   dw_1.filter()
   dw_1.retrieve()
   dw_1.setredraw(true)
end if
------华软网友回复------
学习      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。