以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  有劳  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=70755)

--  作者:hbhb
--  发布时间:2015/6/28 15:05:00
--  有劳
大师:如实例
请问如何删除表中品名行以上、合计行之外的行,也就是说模糊删除第一个四列皆有数据的行以上,及最后一个四列皆有数据的行以下的所有行。不查找具体某个值。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目9.zip


--  作者:大红袍
--  发布时间:2015/6/28 15:09:00
--  
DataTables("表A").DeleteFor("第一列 is null or 第二列 is  null or 第三列 is null or 第四列 is null")
--  作者:hbhb
--  发布时间:2015/6/28 15:19:00
--  
不行,中间有可能某一行某一列没有数据,此行不能删除,也就是说此数据区域不管数据不全,不能删除。
--  作者:hbhb
--  发布时间:2015/6/28 15:26:00
--  
也就是说含品名的行及含合计的行,四列肯定数据皆有,其他行不一定。但一定的是:此区域之外的行肯定数据不全。
--  作者:大红袍
--  发布时间:2015/6/28 15:27:00
--  

Dim sidx As Integer = Tables("表A").FindRow("第一列 = \'品名\'")
Dim eidx As Integer = Tables("表A").FindRow("第一列 = \'合计\'")
For i As Integer = Tables("表A").Rows.Count - 1 To 0 Step -1
    If i < sidx OrElse i > eidx Then
         Tables("表A").Rows(i).delete
    End If
Next


--  作者:hbhb
--  发布时间:2015/6/28 15:35:00
--  
谢谢!不是如此要求。
要模糊删除,第一列不能准确确定数据记录。
只能根据两个绝对条件,查找第一个四列皆有数据,和最好一个皆有数据的行。定位后删除。

--  作者:大红袍
--  发布时间:2015/6/28 15:40:00
--  

Dim fdr As DataRow = DataTables("表A").Find("第一列 is not null and 第二列 is not null and 第三列 is not null and 第四列 is not null", "_sortkey")
Dim sidx As Integer = Tables("表A").FindRow(fdr)
fdr = DataTables("表A").Find("第一列 is not null and 第二列 is not null and 第三列 is not null and 第四列 is not null","_sortkey desc")
Dim eidx As Integer = Tables("表A").FindRow(fdr)
For i As Integer = Tables("表A").Rows.Count - 1 To 0 Step -1
    If i < sidx OrElse i > eidx Then
         Tables("表A").Rows(i).delete
    End If
Next
[此贴子已经被作者于2015/6/28 16:07:55编辑过]

--  作者:hbhb
--  发布时间:2015/6/28 15:48:00
--  
谢谢!就是我要的效果,但是实例中是四列,能否劳驾完善一下,遍列列,因为列数也不一定!
--  作者:大红袍
--  发布时间:2015/6/28 15:48:00
--  
 自己遍历
--  作者:hbhb
--  发布时间:2015/6/28 16:04:00
--  
您写的经典,作为函数收集。
强烈建议您写一本狐表编程技巧汇编,含实用性很强的函数或过程,实用的窗体?我预定。