以文本方式查看主题

-  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=178299)

--  作者:swagger
--  发布时间:2022/6/28 19:20:00
--  不加载数据定位到最后一页最后一行
With DataTables("订单")
    .LoadFilter = "" 
    .LoadTop = 20
    .LoadPage = 0

    If .LoadPage < .TotalPages - 1 Then
        .LoadPage = .TotalPages - 1
        .Load()
    End If
End With


With Tables("订单")
    .Position = .Rows.Count - 1
End With


表初始不加载数据。上述代码有问题,有时候会跳到最后一页第一行。怎么写才正确呢?目的是新增行的时候直接定位到最后一行, 是否最后一页都不必要
[此贴子已经被作者于2022/6/28 19:41:44编辑过]

--  作者:有点蓝
--  发布时间:2022/6/28 20:13:00
--  
我测试没有问题。请上传实例说明
--  作者:swagger
--  发布时间:2022/6/28 20:28:00
--  
不知道为什么有时候可以,特别刚开始数据还没加载就没问题。但加载之后,编辑一段时间,再测试就会跳到第一行,不是最后一行。试了几个表、不同的窗口都是这样。不过这个不是关键了。主要是有没有其它代码方式?譬如sqlfind,毕竟loadtop有点慢,addnew的时候就感觉出来
--  作者:有点蓝
--  发布时间:2022/6/28 20:54:00
--  
不知道您的处理逻辑,没有办法回答。不过为什么addnew一定要先加载一下数据?
--  作者:swagger
--  发布时间:2022/6/28 21:02:00
--  
是这样的,同事录入经常出现空行,要人工删除。所以目的是判断最后一行有没有空行,有没有填写必填项譬如客户名称,如果是空行,没有填写客户名称就不能新增行。譬如订单表,是外部数据表,初始没加载数据。然后我想到的办法是加载数据,然后定位到最后一页最后一行,然后判断最后是否空行,用这种办法防止录入时出现空行。不知道有没有更好的办法?能直接加载最后一行数据就最好了,譬如sqlfind 以最大编号值,找到最后一行,然后判断是否空行。不知道代码怎么写
--  作者:有点蓝
--  发布时间:2022/6/28 21:54:00
--  
很多的方法可以避免啊,比如保存的时候判断是否有客户名称为空的行

if DataTables("订单").find("客户名称 is null") isnot nothing then
if messagebox.show("是否删除客户名称为空的行"""提示", MessageBoxButtons.YesNo) = DialogResult.Yes then
DataTables("订单").deletefor("客户名称 is null")
en dif
endif
DataTables("订单").save

如果要追加其它同事录入的客户名称为空的行
DataTables("订单").removefor("客户名称 is null") 移除当前表客户名称为空的行
DataTables("订单").appendload("客户名称 is null")追加当前表客户名称为空的行
dim idx as integer = Tables("订单").findrow("客户名称 is null")
if idx > -1 then
Tables("订单").Position = idx 定位到当前表客户名称为空的行
else
msgbox("没有客户名称为空的行")
en dif