| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 705 人关注过本帖
标题:请教一个简单的问题!
只看楼主 加入收藏
zhangmq1974
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-1-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
请教一个简单的问题!
本人菜鸟一个,因为工作需要删除DBF中重复的记录,看到Tiger5392老师的帖子,很是欣喜若狂,但是有个地方不懂
USE 表
DO WHILE NOT EOF()
N=RECNO()
M=A
LOCATE ALL FOR A=M and RECNO()>N
IF !EOF()
DELETE ALL FOR A=M and RECNO()>N
ENDIF
GO TOP
SKIP N-1
ENDDO
PACK

M=A这个地方不懂,请多指教,多谢!

搜索更多相关主题的帖子: 工作 记录 
2012-01-19 13:54
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:4 
如果所有字段均重复的记录

SELECT     DISTINCT     *     into     新表     FROM     你的表
2012-01-19 14:28
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
重复记录的标准是指某个字段的值还是所有字段的值,如果是某个字段不允许重复的记录则容易些。
代码中的A应该是指不重复值的字段名。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-01-19 14:36
zhangmq1974
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-1-19
收藏
得分:0 
回复 2楼 tlliqi
我试了,为什么不好使呢,说不认识的关键字或短语

[ 本帖最后由 zhangmq1974 于 2012-1-19 14:43 编辑 ]
2012-01-19 14:42
zhangmq1974
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-1-19
收藏
得分:0 
回复 3楼 hu9jj
如果指的的所有字段都重复的记录如何删除呢
2012-01-19 14:44
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:4 
M=A&&将字段A的当前记录保存在内存变量M中。
另外也可以用 index on a tag a unique搞一个索引然后复制copy to yourtanblename

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2012-01-19 15:17
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
对于“所有字段都重复的记录的删除问题”,先看看原来程序,若字段A重复,只保留第一个记录,那么程序就那样写。假如字段A和B同时重复,只保留第一个记录,那么程序可以这样修改
USE 表
DO WHILE NOT EOF()
  N=RECNO()
  M1=A
  M2=B
  LOCATE ALL FOR A=M1 and B=M2 and RECNO()>N
  IF !EOF()
    DELETE ALL FOR A=M2 and B=M2 and RECNO()>N
  ENDIF
  GO TOP
  SKIP N-1
ENDDO
PACK
如此,你就可以修改程序完成你的要求了

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2012-01-19 15:25
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 4楼 zhangmq1974
6.0?

这样
SELECT * DISTINCT FROM 你的表 into table 新表   

[ 本帖最后由 tlliqi 于 2012-1-19 15:42 编辑 ]
2012-01-19 15:36
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:4 

如果重复记录的所有字段是一样的, 建议采用8楼方法~

如果是个别字段重复的, 建议采用6楼方法, 即:  inde on 字段(或几个字段相加的表达式) uniq to ...

例: inde on 字符型字段1+字符型字段2+str(数字型字段3,16,6)+... uniq to ...

 






 

[ 本帖最后由 茵梦湖 于 2012-1-21 14:33 编辑 ]
2012-01-21 14:30
lygcw9603
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:233
专家分:357
注 册:2006-8-27
收藏
得分:4 
有重复记录说明程序设置的不严谨,应该找原程序设计人员解决,经常在表中作删除操作,误删除的机会还是比较大的。
下面这段代码可以帮你找到重复的记录
close table
use TABLENAME &&表名
for i=1 to RECCOUNT()
    go i
    chz=hz && HZ重复字段名
    COUNT FOR HZ==CHZ TO X
    if X>1
       BROW FOR HZ==CHZ  FONT "宋体",22
    endif
endfor
2012-01-21 22:02
快速回复:请教一个简单的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048766 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved