Foxtable(狐表)用户栏目专家坐堂 → 请教:部门分月工资表的合计代码


  共有18031人关注过本帖树形打印复制链接

主题:请教:部门分月工资表的合计代码

帅哥哟,离线,有人找我吗?
don
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/8 18:37:00 [显示全部帖子]

 

Find

在DataTable查找符合条件的行,如果找到的话,返回找到的行,否则返回Nothing。
如果有多个符合条件的行,默认返回第一个,也可以指定返回第几个符合条件的行。

语法:

Find(Filter,Sort,Index)

Filter:  条件表达式,
请参考表达式的运算符和函数
Sort:    可选参数,指定排序方式。
Index:   可选参数,指定返回第几个符合条件的行。

示例一:

Dim dr As DataRow
dr =
DataTables("产品").Find("产品编号 = '03'") '找出编号为03的产品
With DataTables(
"订单")
    dr = .Find(
"产品 = 'PD01'","日期") '找出第一次订购PD01产品的记录
    dr = .Find(
"产品 = 'PD01'","日期",1) '找出第二次订购PD01产品的记录
End With

实例二:

有的时候,我们需要查找倒数第几行数据,例如最近一次订购某某产品的记录。
可以参考下面的代码:

Dim dr As DataRow
With DataTables("订单")
    dr
= .Find("产品 = 'PD01'","日期 Desc")
'找出最后一次订购PD01产品的记录
   
dr = .Find("产品 = 'PD01'","日期 Desc",1) '找出倒数第二次订购PD01产品的记录
End With

可以看到代码和原来几乎一样,唯一的变化是排序参数,被改为:日期 Desc
加上DESC使得日期按照降序排序,最后的日期排在最前面,我们所找出的第一条记录,就是最后一次订购产品PD01的记录。

Find函数只能找出一条符合条件的行,如果要同时找出所有符合条件的行,可以使用Select方法。


 回到顶部
帅哥哟,离线,有人找我吗?
don
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/8 18:46:00 [显示全部帖子]


...

Dim T as String
T = "月份 ='" & dc.Name & "' And 工号= '" & dr("工号") & "'"
dr(dc.name) = DataTables("工资库").Find(T)("实发工资")
...


 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/8 18:54:00 [显示全部帖子]

以下是引用yangming在2009-5-8 18:52:00的发言:

如不用T,这样也可以? 
dr(dc.name) = DataTables("工资库").Find("月份 ='" & dc.Name & "' And 工号= '" & dr("工号") & "'")("实发工资")

可以.本人喜欢短句.


 回到顶部