【Access小品】一根烟的教训--删除重复记录示例-煮江品茶
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 源码示例


【Access小品】一根烟的教训--删除重复记录示例

发表时间:2013/5/25 9:39:25 评论(3) 浏览(9148)  评论 | 加入收藏 | 复制
   
摘 要:【Access小品】一根烟的教训--删除重复记录示例
正 文:

  版友菜鸟同志问了一个关于删除重复记录的问题,问题的原型似乎为一个打卡的考勤记录,或许由于考勤设备有些假冒伪劣,或许有人考勤作弊,总之是在一段时间中会重复存在多次刷卡记录的问题。于是乎菜鸟同志决定采取从严的措施,一律以15分钟之内重复记录的最后时间为准。菜鸟同志便决定删除所有依此为标准的重复的记录,只保留最后时间的一条记录。但是,菜鸟同志对这个查找和删除有些麻头,原因是不大好在浩瀚的数据中找到这些要删除的东西。


  这个问题的难点在于找到要删除的记录,为什么说这是个难点呢?因为通常对数据表横向的计算(字段间的)是比较容易的,而纵项的计算就相对复杂一些。这个问题的复杂在于不仅要进行纵向的计算(记录间的),而且是至少两次的纵向计算(请注意这句话)。因此对于初学者来说这个难度就相当的大了。


  但凡遇到纵向的计算,法宝大体有两个:其一是域函数或子查询;其二是数据集。有了这个基本的思路,解决问题也就无非是组合使用这两个法宝了。实际上,单独用数据集的方法或者单独用域函数(子查询)的方法也是可以解决这个具体问题的,本例采用两者结合的方法,主要是为简化处理过程,也同时提示这两个方法的一般使用规律。问题的具体解决方法可以查看示例中的相关查询和vb代码,在此不赘述。


  这个问题解答完后,版友殷小宝同志提出强烈的质疑。殷小宝同志认为菜鸟同志所提出的要求是15分钟之内的所有记录只保留最后一条,而解答所采取的算法是相邻两条记录相差15分钟则保留最后一条。这明显的与问题的解答要求不相符。面对殷小宝同志质疑带来的尴尬,该如何挽回颜面呢?当然是有办法的。办法就是将殷小宝同志质疑的问题,带入到另外一个层面去讨论。


  我们知道标准通常有客观的和主观的两类,一般在管理学领域中的标准大都是主观的,也就是人为确定的,主观标准的合理性是相对的。就版友殷小宝同志的质疑来说,既可以看成是执行判断标准的问题,也还可以看成确立判断标准(或者说是完善判断标准)的问题。15分钟之内的所有记录取最后一条,与相邻两条记录小于一定数字取最后一条,这是两个判断标准,但也是可以相互转化的两个标准。


  那么为什么要取“相邻两条记录小于一定数字取最后一条”呢?道理就在于前面提醒同志们注意的那句话,也就是避免过多的纵向计算(这样的计算可以解决但比较麻烦)。到此就剩下这么一个问题了,本示例对应的问题原型可以转换判断标准吗?答案应该是肯定的,因为菜鸟同志会发现两个(或多个)连续的15分钟间隔出现多条记录时,很难说这几十多分钟内多次出现的记录是正常记录。所以更为合理的判断标准还是相邻两条记录之间的判断。而菜鸟同志只是需要基于这样的判断标准,设置相邻两条记录之间合理的时间间隔,这个间隔或许是8分钟,或许是10分钟,依我看15分钟也是可以的。因为15分钟也就一根烟的功夫,某个人不好好上班,跑到外面去吸烟,你说是不是可以算他迟到?让他得到一根烟带来的教训不是很好吗?

 

示例

 



Access软件网交流QQ群(群号:198465573)
 
 相关文章
[access查询][示例]删除重复数据并只保留一条\如何用acc...  【Grant  2008/10/25】
[access查询]【access入门】删除重复数据并不保留重复项...  【麥田  2012/12/25】
常见问答
技术分类
相关资源
文章搜索
关于作者

煮江品茶

文章分类

文章存档

友情链接