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


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

主题:代码执行效率

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2019/11/20 23:57:00 [显示全部帖子]

1、如果"网络子账户明细" 不是生成的临时表,没必要每次判断,
2、当有一个条件不满足时,没必要find。


If DataTables.Contains("网络子账户明细")  = False
    Return Nothing
End If '网络子账户明细非临时表去掉前三行.
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  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
                    Return 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
                    Return Nothing
                End If
            Else
                e.DataRow("下手收款账户名称") = Nothing
                e.DataRow("下手收款子账号") = Nothing
                e.DataRow("上手收款账户名称") = Nothing
                e.DataRow("上手收款子账号") = Nothing
            End If
    End Select
End If
[此贴子已经被作者于2019/11/21 0:00:50编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2019/11/21 9:51:00 [显示全部帖子]

时间的大于等于可以修改一下(没明白您的日期时间值两端的格式符号为什么是单引号而不是双引号?该有的空格也没有?这样的代码执行应该是要报错的! ):

If DataTables.Contains("网络子账户明细")  = False
    Return Nothing
End If '网络子账户明细非临时表去掉前三行.
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(-11) & "# and 系统交易时间< #" & e.DataRow("系统交易时间").AddSeconds(1)  & "#"
    Dim filter2 As String ="付款子账号 = '" & e.DataRow("收款子账号") & "' and 发生额= '" & e.DataRow("发生额") & "' and 系统交易时间< #" & e.DataRow("系统交易时间").AddSeconds(11) & "# and 系统交易时间 > " & e.DataRow("系统交易时间").AddSeconds(-1) & "#"
    Dim filter3 As String ="付款子账号 = '" & e.DataRow("下手收款子账号") & "' and 系统交易时间< #" & e.DataRow("系统交易时间").AddSeconds(11) & "# and 系统交易时间 > #" & e.DataRow("系统交易时间").AddSeconds(-11)  & "# and 收款账户名称 <> '" & e.DataRow("收款账户名称") & "'"
    Dim filter4 As String ="付款子账号 = '" & e.DataRow("上手收款子账号") & "' and 系统交易时间 > #" & e.DataRow("系统交易时间").AddSeconds(-11) & "# and 系统交易时间 < #" & e.DataRow("系统交易时间").AddSeconds(11) & "# and 收款账户名称 <> '" & e.DataRow("收款账户名称") & "'  "
    Select Case e.DataCol.name
        Case "收款账户名称"
            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
                    Return 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
                    Return Nothing
                End If
            Else
                e.DataRow("下手收款账户名称") = Nothing
                e.DataRow("下手收款子账号") = Nothing
                e.DataRow("上手收款账户名称") = Nothing
                e.DataRow("上手收款子账号") = Nothing
            End If
    End Select
End If

 回到顶部