foxpro重复记录查找
我有一个.dbf库,foxpro的,里面“生产号”加“包号”为一条记录,生产号可重复,对应的包号不能重复,需要将有重复的“生产号”显示出来好删除,求这条命令,假设库文件为"u.dbf",结构为"生产号”,“包号”两项。 生产号 包号 011005 A01 011006 A01 011005 A02 011005 A01 011006 A02 希望将 011005 A01重复的一条记录找到后删除
追问:程序运行后进入死循环
我有一个.dbf库,foxpro的,里面“生产号”加“包号”为一条记录,生产号可重复,对应的包号不能重复,需要将有重复的“生产号”显示出来好删除,求这条命令,假设库文件为"u.dbf",结构为"生产号”,“包号”两项。 生产号 包号 011005 A01 011006 A01 011005 A02 011005 A01 011006 A02 希望将 011005 A01重复的一条记录找到后删除
追问:程序运行后进入死循环
答案:1.如果你想自动删除U.DBF表中“生产号”、“包号”两字段内容重复的记录,则执行
SELECT * FROM FORCE U.DBF GROUP BY 生产号,包号 INTO DBF U_自动删除.DBF
即可。对于“生产号”、“包号”两字段内容重复的记录,该语句将只保留其中最后一条记录,结果在“U_自动删除.DBF”表中,依次按“生产号”、“包号”字段内容升序排列。
2.如果你只是想将有重复的“生产号”标识显示出来以便手工删除,则执行:
SELECT *,.F. AS 重复标识 FROM FORCE U.DBF ORDER BY 生产号,包号 INTO DBF U_自动标识.DBF
A=生产号
B=包号
SCAN FOR RECNO()>1
REPL 重复标识 WITH 生产号==A.AND.包号==B
IF 重复标识
SKIP -1
REPL 重复标识 WITH .T.
SKIP 1
ENDIF
A=生产号
B=包号
ENDSCAN
BROW FOR 重复标识
在显示的“U_自动标识.DBF”表中手工删除不需要的记录即可。
其他:use u
inde on 包号 to bh
tmp=allt(包号)
SKIP
do while not eof()
if tmp==allt(包号)
dele
else
tmp=allt(包号)
endif
SKIP
enddo
PACK
USE
RETURN CLEAR
ACCEPT"请输入文件名: " TO NAM
USE &NAM
K=RECCOUNT()-1
FOR I=1 TO K
SCATTER MEMO TO X
IF .NOT.EOF()
SCAN FOR 生产号=X(1) .AND.包号=X(2)
DELETE
ENDSCAN
ENDIF
LOCATE FOR 生产号=X(1).AND.包号=X(2)
RECALL
PACK
ENDFOR
USE
RETURN
上一个:foxpro对某一字段分组后,在各组内排序取前10个,如何操作?
下一个:visual foxpro可以用来学习C#么??????