相关属性和方法

DataTable提供了以下属性和方法,用于在运行过程中动态加载数据。

名称 类型 说明
LoadFilter 属性 字符型,用于设置重新加载数据的条件表达式,语法和所使用的数据源有关。
LoadOrder 属性 字符型,指定加载数据的顺序。
LoadTop 属性 字符型,指定要加载的行数,如果是分页加载,则用于指定每页的行数。
LoadReverse 属性 逻辑型,是否倒序加载,即是否先加载新数据,此属性只有在分页加载的时候才有效。
LoadOver 属性 字符型,用于指定分页加载依据列。
LoadPage 属性 整数型,指定要加载的页号。
TotalPages 属性 整数型,返回分页加载时,总的可加载总页数。
TotalRows 属性 整数型,返回分页加载时,后台数据表符合当前加载条件的总行数。
Load 方法 加载数据。

示例一

首先利用DataTable的LoadFiler属性设置加载条件,然后执行Load方法重新加载数据。
这样我们就可以根据用户输入的条件,重新加载数据。

例如:

DataTables("订单").LoadFilter = "[日期] = #" & Date.Today & "#"
DataTables(
"订单").Load

上面的代码将从后台中加载今天的订单。

需要注意的是,LoadFilter采用的是SQL语法,和常规表达式的语法有所不同,且不同的数据源,语法也会有细节差异。
例如对于SQL SERVER数据源,日期必须用单引号括起来:

DataTables("订单").LoadFilter = "[日期] = '" & Date.Today & "'"
DataTables(
"订单").Load

请参考:SQL表达式的语法差异

示例二

可以用LoadTop属性设置要加载的行数,通常和LoadOrder配合使用。

例如加载最近的100条订单:

DataTables("订单").LoadTop = "100"
DataTables(
"订单").LoadOrder = "日期 Desc"
DataTables(
"订单").Load

需要注意的是,上述代码加载进来的数据并不会按照日期排序,只是按日期排序加载最近的100条订单而已,至于加载进来后的数据的顺序,由Table的Sort属性决定。

我们可以加上关键词Percent,表示按百分比加载。
例如按日期顺序,加载产品为PD01的最近的20%的订单:

DataTables("订单").LoadTop = "20 Percent"
DataTables(
"订单").LoadOrder = "日期 Desc"
DataTables("订单").LoadFilter = "产品 = 'PD01'"
DataTables(
"订单").
Load

提示:按百分比加载对于Oracle数据源无效,因为Oracle不支持Percent关键词。

示例三

如果一个表的行数非常多,可以考虑分页加载,此时用LoadTop指定每页的行数,用LoadPage要加载的页号。

下面的代码每页加载50个订单,加载第三页,注意页号从0开始,所以第三页的编号为2:

With DataTables("订单")
    .
LoadTop = 50
    .
LoadPage = 2
    .
Load
End With

需要注意的是分页加载不能按百分比,只能按行数,例如下面的代码,始终加载的都是前10%的订单,而不是第三个10%的订单:

With DataTables("订单")
    .
LoadTop = "10 Percent"
    .
LoadPage = 2
    .
Load
End With

示例四

分页加载的时候,默认是根据主键分页的,可以用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设置加载顺序。

示例六

在分页加载时,可以用TotalPages属性返回总的可加载总页数,这样我们就可以设计出上一页、下一页、第一页、最后一页这样的加载按钮。
在使用此属性之前,必须先设置LoadTop属性,如果还有加载条件,也得先设置LoadFilter属性,才能返回正确的页数。

例如:

Dim p As Integer = 3
With DataTables(
"订单")
    .
LoadTop = 20
    If
p <= .TotalPages Then
        .
LoadPage = p
        .
Load
    End If
End With

示例七

如果你只想按照目前的加载设置,重新加载表,也就是同步表,只需:

DataTables("订单").Load

再例如重新加载所有表

For Each dt As DataTable In DataTables
    dt.Load()

Next

在默认的情况下,Load在加载数据之前,会先保存现有数据。
Load有一个可选逻辑参数,如果设置为False,将不保存现有数据,例如:

DataTables("订单").Load(False)


本页地址:http://www.foxtable.com/webhelp/topics/1928.htm