以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分页加载点下一页后不显示数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174905)

--  作者:采菊东篱下
--  发布时间:2022/2/10 19:49:00
--  分页加载点下一页后不显示数据
With DataTables("缴费情况")
    If .LoadPage < .TotalPages - 1 Then
        .LoadPage = .LoadPage  + 1
        .LoadTop = 30 \'每页5行
        .LoadOrder = "日期 DESC,单号 DESC"
        .LoadReverse = True
        .Load()
        e.Form.Controls("TextBox3").Value = (.LoadPage + 1) & "/" & .TotalPages
    End If
End With

以前是没问题的,发现软件升级后下一页数据不显了,刚看了一下可用SQLLoad处理,可我原来的表是Normal型,改为SQLTable型很多代码不是要同步改?太折人了!图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/2/10 20:36:00
--  

示例四

分页加载的时候,默认是根据主键分页的,可以用LoadOver属性改变分页列。

例如:

With DataTables("订单")
    .LoadTop = 
20

    .LoadPage = 
3
    .LoadOver = 
"日期"
    .Load()

End
 With

表示根据日期列分页,每页20行,加载第四页。

我们的建议是:尽量采用主键列或者其他值不会重复的列(如身份证号码),作为分页依据列,因为如果分页依据列的值有重复,将会影响分页的准确性,例如上面的代码根据日期分页,每页显示20行,如果某一天有40个订单,那么这40个订单会显示在同一个页面中,而不会按我们期望的那样分成两页显示。


示例五

分页加载默认是顺序,如果希望倒序加载,可以将LoadReverse属性设置为True。
例如按日期分页倒序加载,也就是最新的数据在前:

With DataTables("订单")
    .LoadTop = 
20

    .LoadPage = 
3
    .LoadOver = 
"日期"
    
.LoadReverse = True
    .Load()

End
 With

需要注意的是,经常有用户用LoadOrder属性来设置分页加载的顺序,这是无效的。
要记住:分页加载的时候,用
LoadOver和LoadReverse来设置分页列和加载顺序,非分页加载的时候,用LoadOrder设置加载顺序。


--  作者:采菊东篱下
--  发布时间:2022/2/10 21:26:00
--  
 .LoadOrder = "日期 DESC,单号 DESC"
允不允许同时有两个加载顺序?单号不会重复,我要的就是最新的数据在前面效果,所以上面的代码没问题。
[此贴子已经被作者于2022/2/10 21:26:55编辑过]

--  作者:有点蓝
--  发布时间:2022/2/10 21:39:00
--  
请认真理解2楼红色的代码说明,如果一遍看不懂,就看10遍
--  作者:采菊东篱下
--  发布时间:2022/2/10 21:50:00
--  
改为这样了依然没有下一页:
With DataTables("缴费情况")
    If .LoadPage < .TotalPages - 1 Then
        .LoadPage = .LoadPage  + 1
        .LoadTop = 30 \'每页5行
        .LoadOrder = "_Identify"
        .LoadReverse = True
        .Load()
        e.Form.Controls("TextBox3").Value = (.LoadPage + 1) & "/" & .TotalPages
    End If
End With

--  作者:有点蓝
--  发布时间:2022/2/10 22:21:00
--  
默认就是_Identify列,可以去掉.LoadOrder = "_Identify"

另外确定数据有超过30行吗?另外必须已经加载过第一页,否则.TotalPages是没有值的

--  作者:采菊东篱下
--  发布时间:2022/2/10 22:39:00
--  
改为这样一样不显下一页数据,肯定不止30行,28行月租停车数据,8行临时停车数据。
With DataTables("缴费情况")
    If .TotalPages > 0 And .LoadPage < .TotalPages - 1 Then
        .LoadPage = .LoadPage  + 1
        .LoadTop = 30 \'每页30行
        .LoadReverse = True
        .Load()
        e.Form.Controls("TextBox3").Value = (.LoadPage + 1) & "/" & .TotalPages
    End If
End With
[此贴子已经被作者于2022/2/10 22:49:09编辑过]

--  作者:采菊东篱下
--  发布时间:2022/2/10 22:40:00
--  
下一页,上一页,以及TextBox2中的数据都正确,就是没有加载下一页数据。
--  作者:有点蓝
--  发布时间:2022/2/10 23:06:00
--  
调试

msgbox(DataTables("缴费情况").loadfilter)
msgbox(DataTables("缴费情况").LoadOrder )

--  作者:采菊东篱下
--  发布时间:2022/2/10 23:26:00
--  
一个窗口是空白,一个窗口是_Identify