Foxtable(狐表)用户栏目专家坐堂 → [求助]代码简化


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

主题:[求助]代码简化

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


加好友 发短信
等级:童狐 帖子:209 积分:3064 威望:0 精华:0 注册:2008/10/11 15:33:00
[求助]代码简化  发帖心情 Post By:2009/4/7 15:35:00 [只看该作者]

下面的代码可以简化吗?
If e.DataCol.Name = "二级名称"
    Dim drs As List(Of DataRow) = DataTables("订单明细").Select("[订单单号] = '" & e.DataRow("订单单号") & "'")
    For Each dr As DataRow In drs
        dr("二级名称") = e.DataRow("二级名称")
    Next
End If
If e.DataCol.Name = "三级名称"
    Dim drs As List(Of DataRow) = DataTables("订单明细").Select("[订单单号] = '" & e.DataRow("订单单号") & "'")
    For Each dr As DataRow In drs
        dr("三级名称") = e.DataRow("三级名称")
    Next
End If

 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/4/7 15:37:00 [只看该作者]

1、
If e.DataCol.Name = "二级名称"
    Dim drs As List(Of DataRow) = DataTables("订单明细").Select("[订单单号] = '" & e.DataRow("订单单号") & "'")
    For Each dr As DataRow In drs
        dr("二级名称") = e.DataRow("二级名称")
    Next
ElseIf e.DataCol.Name = "三级名称"
    Dim drs As List(Of DataRow) = DataTables("订单明细").Select("[订单单号] = '" & e.DataRow("订单单号") & "'")
    For Each dr As DataRow In drs
        dr("三级名称") = e.DataRow("三级名称")
    Next
End If


2、

ReplaceFor


找出符合条件的行,并将指定列的内容替换为指定值。


语法:


ReplaceFor(DataColName,Value,Filter)

DataColName:替换的列
Value:替换值
Filter:替换条件,请参考表达式的运算符和函数


例如将订单表中,订购数量大于600的订单的折扣设为0.15,只需简单的一行代码即可:


DataTables(
"订单").ReplaceFor("折扣", 0.15, "[数量] > 600")


如果不用ReplaceFor,最精简的代码也是:


For Each
dr As DataRow in DataTables("订单").Select("[数量] > 600")
    dr(
"折扣") = 0.15

Next


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/4/7 15:48:00 [只看该作者]

If e.DataCol.Name In("二级名称","三级名称") Then
    Dim T1,T2 As String 
    Dim drs As List(Of DataRow) 
    T1 = e.DataCol.Name 
    T2 = "[订单单号] = '" & e.DataRow("订单单号") & "'"
    drs = DataTables("订单明细").Select(T2)
    For Each dr As DataRow In drs
        dr(T1) = e.DataRow(T1)
    Next
End If

 回到顶部
帅哥,在线噢!
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/4/7 15:50:00 [只看该作者]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:童狐 帖子:209 积分:3064 威望:0 精华:0 注册:2008/10/11 15:33:00
  发帖心情 Post By:2009/4/7 16:21:00 [只看该作者]

上传实例,请指教,表B中不使用关联表达式,只在表A中使用DataColChangde事件代码,其中的代码如何简化,谢谢

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.rar


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/4/7 16:31:00 [只看该作者]

If "二批名称,终端名称".Indexof(e.DataCol.Name) > -1  Then
    Dim T1,T2 As String
    Dim drs As List(Of DataRow)
    T1 = e.DataCol.Name
    T2 = "[订单单号] = '" & e.DataRow("订单单号") & "'"
    drs = DataTables("表B").Select(T2)
    For Each dr As DataRow In drs
        dr(T1) = e.DataRow(T1)
    Next
End If

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


加好友 发短信
等级:童狐 帖子:209 积分:3064 威望:0 精华:0 注册:2008/10/11 15:33:00
  发帖心情 Post By:2009/4/7 16:41:00 [只看该作者]

谢谢don,还需深刻领会。

 回到顶部