Foxtable(狐表)用户栏目专家坐堂 → 下面这段代码 运行时间有点长 能不能帮我优化一下 谢谢


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

主题:下面这段代码 运行时间有点长 能不能帮我优化一下 谢谢

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
下面这段代码 运行时间有点长 能不能帮我优化一下 谢谢  发帖心情 Post By:2022/9/21 21:05:00 [只看该作者]

下面这段代码 运行时间有点长 能不能帮我优化一下 谢谢
Dim Filter As String = "单据状态='已审核'"
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= '" & .Value & "'"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <='" & .Value & "'"
    End If
End With
Dim drs As List(of DataRow)  = DataTables("销售单").SQLSelect(filter)
Dim Sum As Integer
Dim s1 As Double
Dim s2 As Double
Dim s3 As Double
Dim s4 As Double
Dim s As String
Dim khmc As String
Dim khbm As String 
For Each dr As DataRow In drs
    khbm=dr("客户编码")
    s=dr("单据号")
    khmc=dr("客户名称")
    s1=dr("数量")
    s2 = DataTables("销售单明细").SQLCompute("Sum(辅助数量)","单据状态='已审核' and 单据号='" & s & "' and 客户编码='"  & khbm & "'")
    s3=DataTables("销售单明细").SQLCompute("Sum(辅助数量)","单据状态='已审核' and 单据号='" & s & "'")
    If s1<>s2
        msgbox(s & khmc )
             msgbox(s1)
            msgbox(s2)
    End If
    If s1<>s3
        msgbox(s & khmc )
             msgbox(s1)
            msgbox(s3)
    End If
Next
msgbox("ok")

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


加好友 发短信
等级:二尾狐 帖子:553 积分:5250 威望:0 精华:0 注册:2018/11/6 10:54:00
  发帖心情 Post By:2022/9/21 21:16:00 [只看该作者]


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


加好友 发短信
等级:超级版主 帖子:107660 积分:547615 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/22 8:58:00 [只看该作者]

用sql

select a.单据号,a.客户编码,数量,辅助数量 from {销售单} as a inner join (select 单据号,客户编码,sum(辅助数量) as 辅助数量 from {销售单明细} where 单据状态='已审核' group by 单据号,客户编码) as b on a.单据号 = b.单据号 and a.客户编码 = b.客户编码 where  a.数量<> b.辅助数量
union
select a.单据号,'' as 客户编码,数量,辅助数量 from {销售单} as a inner join (select 单据号,sum(辅助数量) as 辅助数量 from{销售单明细} where 单据状态='已审核' group by 单据号) as b on a.单据号 = b.单据号  where a.数量<> b.辅助数量

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2022/9/22 21:44:00 [只看该作者]

Tables(e.form.Name & "_Table1").fill("selec a.单据号,a.客户编码,a.客户名称,数量 as 列表数量,辅助数量 as 明细数量,金额 as 列表金额,明细金额  from {销售单} where 单据状态='已审核' as a inner join (selec 单据号,客户编码,sum(辅助数量) as 辅助数量,sum(金额) as 明细金额 from {销售单明细} where 单据状态='已审核' group by 单据号,客户编码) as b on a.单据号 = b.单据号 and a.客户编码 = b.客户编码 where  a.数量<> b.辅助数量 or a.金额<>b.明细金额","wjhansdata",True)
If Tables(e.form.Name & "_Table1").Current Is Nothing
messagebox.show("列表和明细一致数据准确!","信息提示",MessageBoxButtons.ok)
e.Form.close()
End If

加了红字条件就出错了

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


加好友 发短信
等级:超级版主 帖子:107660 积分:547615 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/22 22:14:00 [只看该作者]

Tables(e.form.Name & "_Table1").fill("selec a.单据号,a.客户编码,a.客户名称,数量 as 列表数量,辅助数量 as 明细数量,金额 as 列表金额,明细金额  from {销售单} as a inner join (selec 单据号,客户编码,sum(辅助数量) as 辅助数量,sum(金额) as 明细金额 from {销售单明细} where 单据状态='已审核' group by 单据号,客户编码) as b on a.单据号 = b.单据号 and a.客户编码 = b.客户编码 where  (a.数量<> b.辅助数量 or a.金额<>b.明细金额) and a.单据状态='已审核'","wjhansdata",True)

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2022/9/24 13:17:00 [只看该作者]

Tables(e.form.Name & "_Table1").fill("selec a.客户编码, a.客户名称,a.简码,a.电话,sum(已结) as 已结金额,sum(结帐金额) as  结帐金额 from {客户} as a left join (selec 单位编码, 单位名称,借方金额 as 已结, 0 as 结帐金额 from {资金收付明细单} where 单据状态='已审核' and 摘要<>'预收款'  union all Selec 客户编码, 客户名称, 0,金额 from {销售单明细} where 单据状态='已审核' and 结帐状态='已结帐') As b on a.客户编码 = b.单位编码 And a.客户名称 = b.单位名称  where a.已结金额<>a.结帐金额 group by a.客户编码, a.客户名称,a.简码,a.电话 ","wjhansdata",True)
加了个条件出错了 不加的话 没有错

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


加好友 发短信
等级:超级版主 帖子:107660 积分:547615 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/24 13:52:00 [只看该作者]

"select * from (select a.客户编码, a.客户名称,a.简码,a.电话,sum(已结) as 已结金额,sum(结帐金额) as  结帐金额 from {客户} as a left join (selec 单位编码, 单位名称,借方金额 as 已结, 0 as 结帐金额 from {资金收付明细单} where 单据状态='已审核' and 摘要<>'预收款'  union all Selec 客户编码, 客户名称, 0,金额 from {销售单明细} where 单据状态='已审核' and 结帐状态='已结帐') As b on a.客户编码 = b.单位编码 And a.客户名称 = b.单位名称  group by a.客户编码, a.客户名称,a.简码,a.电话) as d  where 已结金额<>结帐金额"

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2022/9/24 14:53:00 [只看该作者]

谢谢 为啥跟6楼加条件不一样 

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


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

结帐金额】是计算值,可以理解为表达式列,不是表里的列名,只有sql执行完毕才会有这个列

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2022/9/24 20:15:00 [只看该作者]

多谢
[此贴子已经被作者于2022/9/25 8:46:01编辑过]

 回到顶部