以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  不知道这个是不是有问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=43764)

--  作者:powermannico
--  发布时间:2013/12/14 16:03:00
--  不知道这个是不是有问题
 做了一个功能:当用户新增了一行,但没有输入内容的话,保存时会检测,如果没有内容就删除后再保存
表A只有[结算方式]一列,通过窗体中表控件绑定到表A,在窗口的保存按钮中有代码:
Dim Tab As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim r As Row

Select Case Tab.SelectedIndex
    Case 2
        For Each r In Tables("A").Rows
            If r.IsNull("结算方式") Then
                r.Delete
            End If
        Next
        Tables("A").Save
End Select
现在的问题是如果新增了一空行,那么点保存,这条空行会被删除后保存,但是。。。如果新增两空行,那么只有一个空行会被删除

--  作者:Bin
--  发布时间:2013/12/14 16:07:00
--  

遍历删除的话,注意这里的说明:

http://www.foxtable.com/help/topics/0599.htm


for i as integer = tables("A").rows.count-1 to 0  setp -1

     if tables("A").rows(i).IsNull("结算方式") Then

         tables("A").rows(i).Delete

     end if

next


另外你这个遍历的方式效率并不高,应该在BeforSaveDataRow事件中判断当前行是否为空,然后直接删除比较好


--  作者:powermannico
--  发布时间:2013/12/14 16:17:00
--  
 好用BeforSaveDataRow,谢