Foxtable(狐表)用户栏目专家坐堂 → 代码如何优化?


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

主题:代码如何优化?

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
代码如何优化?  发帖心情 Post By:2019/4/26 1:22:00 [只看该作者]

标录明细共有30行,输入最高家数为6家时,共耗时3.8秒,如何优化下面这段代码??

Dim filt As String = "系统编号 = '" & e.DataRow("系统编号") & "'"    
Case "最高家数"
        'Dim dts As List(Of DataRow) = Tables("开标记录.标录明细").DataTable.Select("系统编号 = '" & dr("系统编号") & "' And [有效报价] > 0 " ,"有效报价 DESC")
        Dim dts As List(Of DataRow) = DataTables("标录明细").Select(filt & "And [有效报价] > 0 " ,"有效报价 DESC")
        If e.NewValue <> e.OldValue AndAlso dts.Count > e.NewValue Then
            For n As Integer = 0 To dts.Count -1
                If dts(n)("评标状态").Contains("最高报价")
                    dts(n)("评标状态") = Nothing
                End If
            Next
            'Tables("开标记录.标录明细").DataTable.ReplaceFor("评标状态",Nothing,filt)
            For i As Integer = 0 To e.NewValue -1
                dts(i)("评标状态") = "最高报价" & (i+1)
            Next
        Else
            MessageBox.Show("请先录入标录明细后,再执行!")
        End If

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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/26 9:15:00 [只看该作者]

Dim filt As String = "系统编号 = '" & e.DataRow("系统编号") & "'"
Case "最高家数"
    'Dim dts As List(Of DataRow) = Tables("开标记录.标录明细").DataTable.Select("系统编号 = '" & dr("系统编号") & "' And [有效报价] > 0 " ,"有效报价 DESC")
    Dim dts As List(Of DataRow) = DataTables("标录明细").Select(filt & "And [有效报价] > 0 " ,"有效报价 DESC")
    If e.NewValue <> e.OldValue AndAlso dts.Count > e.NewValue Then
        For n As Integer = 0 To dts.Count -1
            If dts(n)("评标状态").Contains("最高报价")
                dts(n)("评标状态") = Nothing
            End If
            If n < e.NewValue Then
                dts(n)("评标状态") = "最高报价" & (n+1)
            End If
        Next
    Else
        MessageBox.Show("请先录入标录明细后,再执行!")
    End If

另外慢未必是这里的问题,只是很简单的赋值而已,可能更改评标状态触发了其它事件,或者表达式

 回到顶部