以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  删除行  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=117334)

--  作者:qinjh18935180888
--  发布时间:2018/4/10 20:49:00
--  删除行
老师,在这个地方,怎样删除  DataTables("订单")中没有找到相同编号的行,也就是删除 Dr 行。



Dim Book As New XLS.Book("c:\\test\\订单.xls")
Dim
Sheet As XLS.Sheet = Book.Sheets(0)
Tables(
"订单").StopRedraw()
Dim
nms() As String = {"编号","产品","客户","雇员","单价","折扣","数量","日期"}
For
n As Integer = 1 To Sheet.Rows.Count -1
   
Dim bh As String = sheet(n,0).Text
   
Dim dr As DataRow = DataTables("订单").Find("编号 = \'" & bh & "\'")
    If
dr Is Nothing Then \'如果不存在同编号的订单



老师,在这个地方,怎样删除  DataTables("订单")中没有找到相同编号的行,也就是删除 Dr 行。




       
dr =  DataTables("订单").AddNew()
    End If
    For
m As Integer = 0 To nms.Length - 1
       
dr(nms(m)) = Sheet(n,m).Value
    Next
Next
Tables(
"订单").ResumeRedraw()

--  作者:有点蓝
--  发布时间:2018/4/10 21:06:00
--  
既然没有找到相同编号的行,也就是不存在这行,又何需删除?
--  作者:qinjh18935180888
--  发布时间:2018/4/10 21:20:00
--  
DataTables("订单") 中有这个编号的行,只不过在sheet中没有找到这个编号的行。我的意思是找到相同的编号就覆盖,没有找到就删除 DataTables("订单")的行。
--  作者:有点蓝
--  发布时间:2018/4/10 21:36:00
--  
用个集合记录找到的行,然后删除剩下的

Dim Book As New XLS.Book("c:\\test\\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
Dim nms() As String = {"编号","产品","客户","雇员","单价","折扣","数量","日期"}
Dim lst As new List(of String)
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text
    Dim dr As DataRow = DataTables("订单").Find("编号 = \'" & bh & "\'")
    If dr Is Nothing Then \'如果不存在同编号的订单
        dr =  DataTables("订单").AddNew()
    Else
        lst.Add(dr("编号"))
    End If
    For m As Integer = 0 To nms.Length - 1
        dr(nms(m)) = Sheet(n,m).Value
    Next
Next
DataTables("订单").DeleteFor("编号 not in (\'" & String.Join("\',\'",lst.ToArray) & "\')")
Tables("订单").ResumeRedraw()

--  作者:qinjh18935180888
--  发布时间:2018/4/10 22:04:00
--  
ok
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/4/10 22:04:19编辑过]