CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  DataWindow

如何高效删除已经import到了数据窗口中的重复记录?

楼主sdahyk()2003-12-01 22:50:19 在 PowerBuilder / DataWindow 提问

在将一外部的dbf数据文件import到数据库时,经常有手工给出的数据存在重复行,那位大虾有简易高效的解决办法?  
  注意:本人的开发环境为:PB9   +   Oracle   8 问题点数:20、回复次数:7Top

1 楼klbt(快乐白兔)回复于 2003-12-01 23:00:41 得分 0

用DW实现,按主键列排序,对所有行循环判断.Top

2 楼sdahyk()回复于 2003-12-02 08:44:36 得分 0

这样的方法我总感觉不够高效,设想一下,如果DW中有1000条记录,就要循环比对1000*999=99.9万次,如果DW中有1万条记录呢?......  
  有没有其它方法?Top

3 楼klbt(快乐白兔)回复于 2003-12-02 08:56:17 得分 15

另一个思路,在DBerror事件编码:  
   
  if   Left(sqlerrtext,9)   =   "ORA-00001"   then  
        MessageBox("数据错误","第"+String(row)+"行"+"主键重复!",Stopsign!)  
  end   if  
   
  return   1Top

4 楼sun1976(嫁给我,你就是我的一妾)回复于 2003-12-02 10:04:41 得分 5

循环不用嵌套,1000计算次数也不多  
  例子:  
  /*dw_1   ,主键a1,a2,a3....为方便都设做string   型*/  
  string   ls_a1,ls_a2,ls_a3......  
  long   ll_row,ll_rowcount  
  //把变量都设置为你的数据窗口中不可能出现的值,这里设为‘’,你可设为"!@##$$%%%%"  
  ls_a1=''  
  ls_a2=''  
  ls_a3=''  
  ....  
  dw_1.setsort("a1   a,a2   a,a3   a")/*/如果更多字段联合主键,都列上,就是按主键排序*/  
  dw_1.sort()  
   
  ll_rowcount=dw_1.rowcount()  
  for   ll_row   =   ll_rowcount   to   1   step   -1/*倒着删除为了行号不会改变,好处理。不然删了一行后其后的行号都减1了*/  
  if   ls_a1=dw_1.getitemstring(ll_row,'a1')   and   ls_a2=dw_1.getitemstring(ll_row,'a2')   and   ls_a3=dw_1.getitemstring(ll_row,'a3')   then  
  dw_1.deleterow(ll_row)  
  else  
  ls_a1=dw_1.getitemstring(ll_row,'a1')  
  ls_a2=dw_1.getitemstring(ll_row,'a2')  
  ls_a3=dw_1.getitemstring(ll_row,'a3')  
  end   if  
   
  next  
   
  Top

5 楼sdahyk()回复于 2003-12-03 18:14:00 得分 0

快乐白兔的第二种方法我没有想过,等我试一下,行的话就可以结贴了...Top

6 楼sdahyk()回复于 2003-12-03 18:19:05 得分 0

关羽的说法也对,当时我只想到了DW中的任意两条数据都得进行比对...  
   
  不过总感觉这样的方法不够高效,要多写这么多代码。Top

7 楼sdahyk()回复于 2003-12-03 21:44:34 得分 0

感谢快乐白兔提供的思路,问题已经解决。多谢!Top

相关问题

  • 删除记录后,如何高效地刷新界面?
  • 删除记录????
  • 记录删除
  • 数据记录的删除
  • 有关ADO删除记录
  • 删除多条记录
  • 表记录删除不掉
  • 删除记录失败
  • 记录删除问题?
  • 删除记录的问题

关键词

  • 数据
  • dw
  • getitemstring
  • ll
  • ls
  • 主键
  • rowcount
  • row
  • 高效
  • 方法

得分解答快速导航

  • 帖主:sdahyk
  • klbt
  • sun1976

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo