Foxtable(狐表)用户栏目专家坐堂 → 代码执行效率


  共有2101人关注过本帖平板打印复制链接

主题:代码执行效率

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15284 威望:0 精华:0 注册:2015/7/18 10:10:00
代码执行效率  发帖心情 Post By:2019/11/20 23:10:00 [只看该作者]

以下代码执行到黄色部分,需要3.8秒,不知道是什么原因?“网络子账户明细”数据有25万行

Dim st As Date = Date.Now
If e.DataRow.Isnull("系统交易时间") = False Then
    Dim filter1 As String =" 收款子账号 = '" & e.DataRow("付款子账号") & "' and 发生额= '" & e.DataRow("发生额") & "'and 系统交易时间>= '" & e.DataRow("系统交易时间").AddSeconds(-10) & "'and 系统交易时间<= '" & e.DataRow("系统交易时间") & "' "
    Dim filter2 As String =" 付款子账号 = '" & e.DataRow("收款子账号") & "' and 发生额= '" & e.DataRow("发生额") & "'and 系统交易时间<= '" & e.DataRow("系统交易时间").AddSeconds(10) & "'and 系统交易时间>= '" & e.DataRow("系统交易时间") & "'"
    Dim filter3 As String =" 付款子账号 = '" & e.DataRow("下手收款子账号") & "' and 系统交易时间<= '" & e.DataRow("系统交易时间").AddSeconds(10) & "'and 系统交易时间>= '" & e.DataRow("系统交易时间").AddSeconds(-10)  & "'and 收款账户名称 <> '" & e.DataRow("收款账户名称") & "'"
    Dim filter4 As String =" 付款子账号 = '" & e.DataRow("上手收款子账号") & "' and 系统交易时间>= '" & e.DataRow("系统交易时间").AddSeconds(-10) & "'and 系统交易时间<= '" & e.DataRow("系统交易时间").AddSeconds(10) & "' and 收款账户名称 <> '" & e.DataRow("收款账户名称") & "'  "
    Select Case e.DataCol.name
        Case "收款账户名称"
            If DataTables.Contains("网络子账户明细") =True Then
               
                If  e.DataRow.Isnull("付款子账号") = False AndAlso  e.DataRow.Isnull("支付单号") = False AndAlso  e.DataRow.Isnull("系统交易时间") = False Then

                    Dim dr1 As DataRow = DataTables("网络子账户明细").find(filter1)

                    If dr1 IsNot Nothing Then
                        e.DataRow("上手收款账户名称") = dr1("付款账户名称")
                        e.DataRow("上手收款子账号") = dr1("付款子账号")
                        e.DataRow("下手收款账户名称") = Nothing
                        e.DataRow("下手收款子账号") = Nothing
                    Else
                        e.DataRow("上手收款账户名称") = Nothing
                        e.DataRow("上手收款子账号") = Nothing
                        e.DataRow("下手收款账户名称") = Nothing
                        e.DataRow("下手收款子账号") = Nothing
                    End If
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")
                ElseIf e.DataRow.Isnull("付款子账号") = False AndAlso  e.DataRow.Isnull("支付单号") = True AndAlso  e.DataRow.Isnull("系统交易时间") = False Then
                    Dim dr2 As DataRow = DataTables("网络子账户明细").find(filter2)
                    If dr2 IsNot Nothing Then
                        e.DataRow("下手收款账户名称") = dr2("收款账户名称")
                        e.DataRow("下手收款子账号") = dr2("收款子账号")
                        e.DataRow("上手收款账户名称") = Nothing
                        e.DataRow("上手收款子账号") = Nothing
                    Else
                        e.DataRow("下手收款账户名称") = Nothing
                        e.DataRow("下手收款子账号") = Nothing
                        e.DataRow("上手收款账户名称") = Nothing
                        e.DataRow("上手收款子账号") = Nothing
                    End If
                End If
            End If

           End Select
End If


 回到顶部
总数 12 1 2 下一页