| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1627 人关注过本帖
标题:重复记录删除问题
只看楼主 加入收藏
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
以下是引用sdta在2014-4-25 21:04:56的发言:

楼主代码的意思中传递的信息是:逻辑删除相同记录中第一次出现的记录

楼主给出的代码是表达了那样的信息。不过,可能楼主没有表达清楚,要是那样的话有什么意义?

相互学习,互相交流,共同提高。
2014-04-25 21:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9847
专家分:27234
注 册:2012-2-5
收藏
得分:0 
楼主要删除的记录是表中前12条记录,看下原表就明白了

坚守VFP最后的阵地
2014-04-25 21:19
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
我仔细分析了楼主的代码,错误出在 scan 循环结构中使用 skip 造成的,因为在 endscan 时系统会再执行一次 skip,这样就多移动了一次指针。将代码中的 scan ... endscan 改为 do while not eof()...enddo,其他代码不作任何修改就可以了,请测试。
收到的鲜花
  • tlliqi2014-04-25 21:26 送鲜花  20朵   附言:加分

泉城飞狐
2014-04-25 21:21
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用liuxingang28在2014-4-25 21:21:25的发言:

我仔细分析了楼主的代码,错误出在 scan 循环结构中使用 skip 造成的,因为在 endscan 时系统会再执行一次 skip,这样就多移动了一次指针。将代码中的 scan ... endscan 改为 do while not eof()...enddo,其他代码不作任何修改就可以了,请测试。
是的 分析正确
2014-04-25 21:22
yjc9894301
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2011-3-25
收藏
得分:0 
回复楼上的 sdta 对这段程序的理解:
确实要逻辑删除相同记录中第一次出现的记录.谢谢你了,以后还得多向你学习.
2014-04-25 21:27
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9847
专家分:27234
注 册:2012-2-5
收藏
得分:0 
建议楼主认真研究下Scan EndScan命令的用法

坚守VFP最后的阵地
2014-04-25 21:35
yjc9894301
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2011-3-25
收藏
得分:0 
回复六楼 tlliqi的提问:上面写的代码确实把第一次出现有重复的记录做了逻辑删除标记,不过只要能查出哪些记录有重复,下面的工作就好做了.
2014-04-25 21:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你(們)又知道報名字段重覆就等於記錄重覆了?

授人以渔,不授人以鱼。
2014-04-26 13:23
sash
Rank: 4
等 级:业余侠客
威 望:6
帖 子:65
专家分:249
注 册:2014-4-25
收藏
得分:20 
楼主你好:看了你的问题,觉得你的题意有问题.
1.首先你要删除的不是重复记录,因为冲你提供的表来看,里面的记录没有一条是重复的.
  所谓重复记录是指两条记录里面的字段内容完全相同.而你的样表中没有这样的记录。
2.根据你要取得的结果来看,应该是:报名序号相同的记录,只保留后面一条记录(引深来看
  如果报名序号相同超过两条记录的保留最后一条记录)。
3.按照此意,你写的程序本身有问题,所以得到的结果必然是错的。
4.要得到正确的结果,利用我们掌握的SQL-SELECT语句就可以解决这个问题,
  具体做法如下:
  SELECT RecNo() AS recno,* FROM lsb INTO CURSOR tmp1
  SELECT Max(recno) AS recno FROM tmp1 GROUP BY 报名序号 INTO CURSOU tmp2
  SELECT 序号,组序号,报名序号,姓名,性别,成绩,Cname,Id FROM tmp1 a INNER JOIN tmp2 b ;
      ON a.recno=b.recno INTO CURSOR tmp3

  好了tmp3就是楼主要得结果,当然这是最简单的,如果对得到的结果记录有其他要求的,还
需要按照实际情况,作出调整,请你自己举一反三了。
收到的鲜花
  • tlliqi2014-04-26 18:44 送鲜花  20朵   附言:回复很有道理
2014-04-26 18:38
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
回复 19 楼 sash
回复很有道理
2014-04-26 18:44
快速回复:重复记录删除问题
数据加载中...
 
   



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

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