以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  同步行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193250)

--  作者:hfapplehao
--  发布时间:2024/8/29 15:06:00
--  同步行
把这段代码放在保存按钮下面,发现表位空表的时候(删去全部行的状态),会提示错误
错误提示如下:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:自定义函数,同步选定行
详细错误信息:
调用的目标发生了异常。
索引超出范围。必须为非负值并小于集合大小。
参数名: index


源代码如下:
\'此函数的目的是针对当前表,选中一定的区域,然后程序会判断选定的行,分别对每一行进行同步操作
Dim tb As Table = CurrentTable

If tb IsNot Nothing Then \' 判断表是不是为空
    \' 检查选定行的范围是否有效,并且确保索引在表格行数范围内
    If tb.TopPosition >= 0 AndAlso tb.BottomPosition >= 0 AndAlso tb.TopPosition <= tb.BottomPosition AndAlso tb.BottomPosition < tb.Rows.Count Then
        For i As Integer = tb.TopPosition To tb.BottomPosition
            \' 检查索引是否在有效范围内
            If i >= 0 AndAlso i < tb.Rows.Count Then
                Dim dr As Row = tb.Rows(i)
                
                \' 检查行是否有效
                If dr IsNot Nothing Then
                    dr.Load()
                End If
            End If
        Next
    Else
        popmessage("选定行的范围无效或表格中没有有效的行。")
    End If
Else
    popmessage("表格为空。")
End If

--  作者:有点蓝
--  发布时间:2024/8/29 15:15:00
--  
我测试没有问题呀,做个例子发过来看看。另外代码没有必要搞那么复杂,有些判断是没有必要的

Dim tb As Table = CurrentTable

If tb.Rows.Count > 0 Then \' 判断表是不是为空
    \' 检查选定行的范围是否有效,并且确保索引在表格行数范围内
    If tb.TopPosition >= 0 AndAlso tb.BottomPosition >= 0 Then
        For i As Integer = tb.TopPosition To tb.BottomPosition
            tb.Rows(i).Load()
        Next
    Else
        popmessage("选定行的范围无效或表格中没有有效的行。")
    End If
Else
    popmessage("表格为空。")
End If