FindRow

根据指定的条件表达式查找行,返回整数型值,表示行的位置,如果没有找到符合条件的行,则返回 -1。
本方法也可以用于查找某一个DataRow在表(Table)中的位置。
如果Table处在汇总模式下,计算行位置的时候,分组行不包括在内。

语法一

FindRow(Expression, RowStart, Wrap)

参数

例如我们需要在当前表中的公司名称列中,查找单位包括“湛江”二字的行:

With CurrentTable
    Dim
r As Integer
    r
= .FindRow("[公司名称] Like '%湛江%'") '从 第一行开始查找
    If
r >= 0 Then '如果找到的话
       
.Position = r '定位到找到的行。
   
End If
End With

上面的代码是从第一行开始查找,如果要从当前行的下一行开始查找,代码如下。

With CurrentTable
    Dim
r As Integer
    r
= .FindRow("[公司名称] Like '%湛江%'", .Position + 1, True ) '从当前行的下一行开始查找
    If
r >= 0 Then '如果找到的话
       
.Position = r '定位到找到的行。
   
End If
End With

如果我们做一个按钮来执行上面的代码,那么反复单击按钮,会依次找出符合条件的行。

语法二

FindRow(DataRow)

DataRow: 指定一个数据行

返回指定的数据行在Table中的位置,如果没找到(例如Table处于筛选状态,而此数据行恰好不符合筛选条件),则返回-1。

例如在订单表中,我们希望将光标定位到最后一次订购PD01产品的订单:

Dim dr As DataRow
dr =
DataTables("订单").Find("[产品] = 'PD01'", "日期 Desc")
If
dr IsNot Nothing Then
    Dim
wz As Integer = Tables("订单").FindRow(dr)
    If
wz >= 0 Then
        Tables
("订单").Position = wz

    End If
End If

上面的代码,首先利用DataTable的Find方法找出符合条件的DataRow,然后利用Table的FindRow方法找出这一DataRow在Table中的位置 。
说得通俗点,就是先在仓库(DataTable)中查找,看看仓库是否有符合条件的DataRow,如果有,就到展厅(Table)中找出这个DataRow的位置。


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