以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 下面这段代码 运行时间有点长 能不能帮我优化一下 谢谢 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179983) |
|
-- 作者:jswjyjf -- 发布时间: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 -- 发布时间:2022/9/21 21:16:00 -- 看这里http://www.foxtable.com/webhelp/topics/2219.htm |
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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 加了红字条件就出错了
|
|
-- 作者:有点蓝 -- 发布时间:2022/9/22 22:14:00 --
|
|
-- 作者:jswjyjf -- 发布时间: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) 加了个条件出错了 不加的话 没有错
|
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2022/9/24 14:53:00 -- 谢谢 为啥跟6楼加条件不一样 |
|
-- 作者:有点蓝 -- 发布时间:2022/9/24 15:33:00 -- 【结帐金额】是计算值,可以理解为表达式列,不是表里的列名,只有sql执行完毕才会有这个列 |
|
-- 作者:jswjyjf -- 发布时间:2022/9/24 20:15:00 -- 多谢 [此贴子已经被作者于2022/9/25 8:46:01编辑过]
|