以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 排序导致索引出错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=195683)

--  作者:yqiushyqiush
--  发布时间:2025/2/28 15:12:00
--  [求助] 排序导致索引出错
请问:在表事件AfterSelRangeChange,输入以下代码:

With Tables("申请表")
    Dim i As Integer = .BottomPosition - .Position + 1
    If i > 1 Then
        StatusBar.Message2 = "   共选定 " & i & " 行"
    Else        
        StatusBar.Message2 = "" 
    End If
End With

总是在打开项目时出现错误信息:
       
图片点击可在新窗口打开查看此主题相关图片如下:索引错误.png
图片点击可在新窗口打开查看
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2025.1.3.1
错误所在事件:申请表,AfterSelRangeChange
详细错误信息:
索引超出范围。必须为非负值并小于集合大小。
参数名: index

关掉错误信息项目可以正常打开,状态栏也可以正常显示选定行数,如何避免出现错误信息?表格没有做分组处理
[此贴子已经被作者于2025/2/28 16:19:37编辑过]

--  作者:y2287958
--  发布时间:2025/2/28 15:16:00
--  
判断排除一下没有焦点的状态

If e.IsFocusCell Then \'如果是焦点所在单元格


--  作者:yqiushyqiush
--  发布时间:2025/2/28 16:01:00
--  
找到原因了,AfterOpenProject事件中去掉Tables("消耗品采购申请表").Sort = "申购日期"这行代码即可,但是这行排序代码我想保留,请问如何解决?
--  作者:有点蓝
--  发布时间:2025/2/28 16:36:00
--  
不能保留。排序会导致多行选中无效
--  作者:yqiushyqiush
--  发布时间:2025/2/28 17:23:00
--  
好吧,另外,还发现一个问题,从上往下选定多行可以正常统计选择行数,从下网上没有显示,有办法解决吗?
--  作者:有点蓝
--  发布时间:2025/2/28 17:33:00
--  

Dim i As Integer = .BottomPosition - .Position + 1

改为

Dim i As Integer = .BottomPosition - .TopPosition + 1

--  作者:yqiushyqiush
--  发布时间:2025/2/28 17:53:00
--  
可以了,谢谢蓝版主!
--  作者:yqiushyqiush
--  发布时间:2025/3/5 13:36:00
--  
再追问一个疑问,系统自带的状态栏右侧数据统计功能,无论是否排序,都不会出现错误信息,是做了什么处理?能引用这个功能吗?

图片点击可在新窗口打开查看此主题相关图片如下:20250305133129.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2025/3/5 14:15:00
--  
http://www.foxtable.com/webhelp/topics/0545.htm

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=77615&skin=0

--  作者:yqiushyqiush
--  发布时间:2025/3/5 15:34:00
--  
参考示例后,功能已经完美实现,谢谢!