讨论关于数据对比

fyxchh 2005-11-28 09:19:32
3个数据窗口对象是一样的,一共6列

dw_1是从数据库检索出来的,dw_2是从TXT文件导入的,两个数据窗口记录数可能不同。

现在要求对比两个数据窗口中的数据,只对比前4列,只要前4列完全相同就移动到dw_3,最后结果是dw_3中是核对正确的,dw_2,dw_1分别是核对不一致的



我用循环

for i = 1 to dw_1.rowcount()

......

li_row = dw_2.find(...,1,dw-2.rowcount())

if li_row > 0 then

dw_2.deleterow(li_row)

dw_1.rowsmove(i,i,primary!,dw_3,1,primary!)

i --

end if

next

这样数据多的话速度很慢,几万条记录,有点无法忍受,大家讨论一下怎样提高速度?谢谢
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
老奀 2005-11-28
  • 打赏
  • 举报
回复
小马哥,是不是CPB的小马哥?,久违了。
fyxchh 2005-11-28
  • 打赏
  • 举报
回复
会出什么错误?

wguxin868 2005-11-28
  • 打赏
  • 举报
回复
把TXT文件导入到临时表里再对比肯定比较快的

楼主程序也有问题,肯定出错误的
fyxchh 2005-11-28
  • 打赏
  • 举报
回复
谢谢大家,有没有更好的方法呢,欢迎继续讨论
老奀 2005-11-28
  • 打赏
  • 举报
回复
循环是肯定慢的。何况你有万条级数据,
不过我没有测试过,可否这样想,借用临时表和SQL语句来对比。
wu_07 2005-11-28
  • 打赏
  • 举报
回复
还有取数据时候用dw.object.col[]的速度要比getitem快一些

wu_07 2005-11-28
  • 打赏
  • 举报
回复

如果dw_1,dw_2本身没有重复数据,可以将记录都copy到dw_3中,排序后逐一和下一记录比较,将重复和不符和条件的删除

那种方法速度更快一些,还要经过测试
xiaoplx 2005-11-28
  • 打赏
  • 举报
回复
1.rowcount()用一变量保存起来,不要每次都rowcount()
2.从数据库检索的直接用SQL语句
wu_07 2005-11-28
  • 打赏
  • 举报
回复
运行过程前dw_1,dw_2,dw_3,setRedraw(false),结束后setRedraw(ture),可以提高一些速度

609

社区成员

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

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