以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  奇怪  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84790)

--  作者:czy66ds
--  发布时间:2016/5/10 15:44:00
--  奇怪
假设窗口中有表控件table1,希望判断表中是否存在空行:

Dim tbl As Table = e.Form.Controls("Table1").Table
Dim r As Row
For Each r In tbl.Rows
    If  r Is Nothing  Then
        MessageBox.Show("表中存在空行,不能保存!")
        Return
    End If
Next

为何明明存在空行也不报告呢?

--  作者:大红袍
--  发布时间:2016/5/10 15:47:00
--  

Dim tbl As Table = e.Form.Controls("Table1").Table
Dim r As Row
For Each r In tbl.Rows
    Dim isnull As Boolean = True
    For Each c As Col In tbl.Cols
        If r.IsNull(c.name) = False Then
            isNull = False
        End If
    Next
    If isnull  Then
        MessageBox.Show("表中存在空行,不能保存!")
        Return
    End If   
Next


--  作者:czy66ds
--  发布时间:2016/5/11 10:25:00
--  
谢谢,又问:

Dim tbl As Table = e.Form.Controls("Table3").Table
For Each r As Row In tbl.Rows
    For Each c As Col In tbl.Cols
        If r.IsNull(c.name) = False Then
            r.Save
            Exit For
        End If
    Next
Next

上述代码是想实现在Table3中保存非空行,而空行不保存。怎么不听话呢?

--  作者:大红袍
--  发布时间:2016/5/11 10:26:00
--  

Dim tbl As Table = e.Form.Controls("Table1").Table
Dim r As Row
For Each r In tbl.Rows
    Dim isnull As Boolean = True
    For Each c As Col In tbl.Cols
        If r.IsNull(c.name) = False Then
            isNull = False
        End If
    Next
    If isnull = false  Then
        r.Save
    End If   
Next


--  作者:czy66ds
--  发布时间:2016/5/11 10:45:00
--  
经测试还是保存空行了,何故?
--  作者:大红袍
--  发布时间:2016/5/11 10:46:00
--  
 不,可,能,上传实例
--  作者:大红袍
--  发布时间:2016/5/11 10:47:00
--  
 看看你项目有没有逻辑列
--  作者:大红袍
--  发布时间:2016/5/11 10:49:00
--  

Dim tbl As Table = e.Form.Controls("Table1").Table
Dim r As Row
For Each r In tbl.Rows
    Dim isnull As Boolean = True
    For Each c As Col In tbl.Cols
        If c.IsBoolean Then
            If r(c.name) = True  Then
                isNull = False
            End If
        ElseIf r.IsNull(c.name) = False
            isNull = False
        End If
    Next
    If isnull = False  Then
        r.Save
    End If
Next

[此贴子已经被作者于2016/5/11 14:41:41编辑过]

--  作者:czy66ds
--  发布时间:2016/5/11 12:52:00
--  
原因找到了,原来是逻辑列在捣乱。做一简单例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:不保存空行.foxdb


打开窗口1输入数据,留有空行,数据保存到测试表,空行也保存了。

 随后我按8楼改一下。

[此贴子已经被作者于2016/5/11 12:55:02编辑过]

--  作者:大红袍
--  发布时间:2016/5/11 14:42:00
--  
Dim tbl As Table = e.Form.Controls("Table1").Table
Dim r As Row
For Each r In tbl.Rows
    Dim isnull As Boolean = True
    For Each c As Col In tbl.Cols
        If c.IsBoolean Then
            If r(c.name) = True  Then
                isNull = False
            End If
        ElseIf r.IsNull(c.name) = False
            isNull = False
        End If
    Next
    If isnull = False  Then
        r.Save
    End If
Next