以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教狐爹!实现 EXCEL2007 “删除重复项”功能 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=16203) |
-- 作者:hyl168 -- 发布时间:2012/2/5 15:12:00 -- 请教狐爹!实现 EXCEL2007 “删除重复项”功能 有以下代码,以实现自动删除“表A” 的重复行 ,
由于本人学习水平有限,有个两问题,请狐爹耐心指导一二。
============================分割行========================
Dim dt As DataTable = DataTables("表A") For i As Integer = 0 To dt.DataRows.count - 2 \'遍历全部数据行 hang.Locked = False \'解锁当前行
===========================分割线==========================
问题1: 第一次运行提示错误“Index was outside the bounds of the array.” ,再次运行正常, 何解?
问题2: 请狐爹传授下 ,其它更加科学、高效的方式,以及涉及到的主要命令语句 |
-- 作者:czy -- 发布时间:2012/2/5 15:37:00 -- 我对excel2007没研究,不知道它是怎样删除重复项的。 你还是说说你的实际要求吧 比如,只要表中重复项目全部删除,还是保留一条多余的再删除? 还是以当前行为条件,再寻找整个表中有无重复项再删除? |
-- 作者:hyl168 -- 发布时间:2012/2/5 16:57:00 -- 谢谢你!
比如有5行的内容(包含各种类型的值)完全相同, 那么保留指定的当前行(已被锁定,所以保留下来), 删除其它多余的4行(这是遍历对比的思路,其实效率较低,求指点更加精辟的方法)。
还有个问题就是
一共大概有 400多行 数据, 列字段有 14个 左右(有各种类型的值,比如数字、字符、日期等等)
每次打开,第一次运行代码必然会出现,“Index was outside the bounds of the array.” 再次运行就正常了。这是为什么? [此贴子已经被作者于2012-2-5 17:16:15编辑过]
|
-- 作者:czy -- 发布时间:2012/2/5 17:15:00 -- 这种要求还是直接后台删除效率高一些,如果用遍历的方法效率会很低的。
比如;
Dim cmd As New SQLCommand |
-- 作者:hyl168 -- 发布时间:2012/2/6 9:59:00 -- 使用 SQLCommand 语句 ,调试程序成功
高效、节能、环保,效率提高明显,还不伤手的。 赞!
但直接操作底层数据,没有后悔药吃,始终心里不踏实,待继续学到 SQL 章节后, 再自行改良。
谢谢您的耐心指点。 |