本人菜鸟一个,因为工作需要删除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
对于“所有字段都重复的记录的删除问题”,先看看原来程序,若字段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
如此,你就可以修改程序完成你的要求了
有重复记录说明程序设置的不严谨,应该找原程序设计人员解决,经常在表中作删除操作,误删除的机会还是比较大的。
下面这段代码可以帮你找到重复的记录
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==CHZFONT "宋体",22 endif
endfor