vfp中如何删除重复数据

vfp中如何删除重复数据,第1张

编程

思路,生成一个新的数据库,从旧的数据库中提取数据,如果记录在新数据库中存在,就不复制,如果不存在,就将记录复制到新数据库中!这样的话就没重复的数据了

假定原数据是保存在sj.dbf中,则程序如下:

use sj

copy to temp &&将原数据库内容复制到临时数据库中

zap &&清空原数据库

use temp

jlh=1

stro recc() to jls &&将原记录条数保存到变量中

do whil jlh<=jls &&依次判断在新表中是否存在重复记录

go jlh

stor code to lsbl &&将code字段的值保存在变量中

use sj

loca for code=lsbl

if found()

else

clos data

use temp

copy to lswj for recn()=jlh &&将没有找到的记录可在在临时文件

use sj

appe from lswj &&从临时文件中追加记录

clos data

dele file lswj.dbf &&删除产生的临时文件

endi

jlh=jlh+1

use tmep

endd

clos data

dele file temp.dbf &&删除临时文件

再重新打开原数据库后,你会发现已经没重复的记录了

DELETE ttg1 FROM (Select 姓名,学校,性别 From ttg1 Group By 姓名,学校,性别 Having Count(*)>1) a

where a.姓名=ttg1.姓名 AND a.学校=ttg1.学校 and a.性别=ttg1.性别

根据自己的字段替换

做了一晚上,终于有结果了,我写了4条记录,验证正确。最后的合并结果在一个新的表:新10086.dbf中。

新10086 表的结构与10086表结构相同。所有字段都是字符型。字段b、字段d的宽度要足够。

clear

sele 1

use 10086

copy stru to 新10086

flag=0

xyz=c

b合并值=alltrim(b)

d合并值=alltrim(d)

do while not eof()

skip

if c==xyz

b合并值=b合并值+","+alltrim(b)

d合并值=d合并值+","+alltrim(d)

flag=1

loop

else

if flag=1

sele 2

use 新10086

append blank

replace a with "10086",b with b合并值,c with xyz ,d with d合并值

endif

endif

sele 1

xyz=c

b合并值=alltrim(b)

d合并值=alltrim(d)

flag=0

enddo

sele 2

browse

close table all

cancel


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9941863.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存