以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教下 如何优化这段代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14699)

--  作者:ruan
--  发布时间:2011/11/29 10:54:00
--  请教下 如何优化这段代码

 

我新加一个订单的时候在状态列显示一个 “新加 New”

下面这段代码 在数据多的时候重置订单加入时间列 的时候很慢。 怎样优化代码 ?


\'\'新订单显示

If e.DataCol.Name = "订单加入时间" Then
    Dim t As  Integer
    Dim j As  Date = e.DataRow("订单加入时间")
    t = ( Date.Today - j).TotalDays
    If t < 2  Then
        e.DataRow("状态")= "新加 New"
    Else If e.DataRow("状态")= "新加 New"
        e.DataRow("状态")= Nothing
       
    End If
   
End If


--  作者:狐狸爸爸
--  发布时间:2011/11/29 11:01:00
--  
单单这几行代码,速度不会太慢,也许其他地方影响吧。
--  作者:ruan
--  发布时间:2011/11/29 11:31:00
--  

嗯 不是这段代码的问题是 另外一段的问题 狐爸 看下能解决吗?

 

有8个表要同步显示 状态的内容 所以当重置订单加入日期列的时候 状态列发生了变化 执行下面这段代码的时候影响了速度..

 

 

 

If e.DataCol.Name = "状态"
    Dim Filter As String = "[编号] = \'" & e.DataRow("编号") & "\'"
    Dim drs As List(Of DataRow) = DataTables("A").Select(Filter)
    Dim drs1 As List(Of DataRow) = DataTables("B").Select(Filter)
    Dim drs2 As List(Of DataRow) = DataTables("C").Select(Filter)
    Dim drs3 As List(Of DataRow) = DataTables("D").Select(Filter)
    Dim drs4 As List(Of DataRow) = DataTables("E").Select(Filter)
    Dim drs5 As List(Of DataRow) = DataTables("F").Select(Filter)
    Dim drs6 As List(Of DataRow) = DataTables("G").Select(Filter)
    Dim drs7 As List(Of DataRow) = DataTables("H").Select(Filter)
    Dim drs8 As List(Of DataRow) = DataTables("I").Select(Filter)
   
    For Each dr As DataRow In drs
        dr("状态") = e.DataRow("状态")
    Next
   
    For Each dr1 As DataRow In drs1
        dr1("状态") = e.DataRow("状态")
    Next
    For Each dr2 As DataRow In drs2
        dr2("状态") = e.DataRow("状态")
    Next
    For Each dr3 As DataRow In drs3
        dr3("状态") = e.DataRow("状态")
    Next
   
    For Each dr4 As DataRow In drs4
        dr4("状态") = e.DataRow("状态")
    Next
    For Each dr5 As DataRow In drs5
        dr5("状态") = e.DataRow("状态")
    Next
   
    For Each dr6 As DataRow In drs6
        dr6("状态") = e.DataRow("状态")
    Next
   
    For Each dr7 As DataRow In drs7
        dr7("状态") = e.DataRow("状态")
    Next
   
    For Each dr8 As DataRow In drs8
        dr8("状态") = e.DataRow("状态")
    Next
End If


--  作者:狐狸爸爸
--  发布时间:2011/11/29 12:42:00
--  

1、这是肯定慢的,特别是重置的时候,这些表不能通过关联和表达式来引用吗?

2、用ReplcaeFor方法吧,代码简洁点,速度不见得会提升。


--  作者:ruan
--  发布时间:2011/11/29 12:48:00
--  

 用关联表达式不适用 应为状态这列还要显示其他信息 比如说订单 加急 暂停 .... 要在每一个表都可以修改的 如果用关联表达式 只能在主表修改不适用。 每个人只负责自己的部分 所以不是所以的人都可以看的到主表

我要的就是 每个表信息同步 并且可以修改 修改后所有的表跟着更新。