以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教 临时表可以用upfate吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=196136)

--  作者:jswjyjf
--  发布时间:2025/4/1 14:46:00
--  请教 临时表可以用upfate吗?
请教 临时表可以用upfate吗?
--  作者:有点蓝
--  发布时间:2025/4/1 14:48:00
--  
不能的
--  作者:jswjyjf
--  发布时间:2025/4/1 15:47:00
--  
我以为代码 数据能正常出来 就是有点耗时 谢谢帮我优化一下代码 或者有啥好办法提高速度 感谢

Dim exp1 As String  = "单据状态=\'已审核\' and 单据类别=\'横机\'"
Tables(e.form.Name & "_Table1").fill("selec  加工商名称,产品名称,产品规格,产品型号,sum(发出数量) as 计划数,0 as 已交货数量, 0 as 未交货数量,状态,可超出比例,\'\' As 是否已完成,开单时间  from  {加工计划明细} where " & exp1 & " group by 加工商名称,产品名称,产品规格,产品型号,状态,可超出比例,是否已完成,开单时间","wjhansdata",True)
Tables(e.form.Name & "_Table1").DataTable.DataCols("开单时间").SetDateTimeFormat(DateTimeFormatEnum.DateTime)
With Tables(e.form.Name & "_Table1")
    .MergeMode = MergeModeEnum.Standard
    .MergeCols.Clear()
   .MergeCols.Add("加工商名称")
      .MergeCols.Add("产品名称")
    .MergeCols.Add("产品规格")
    .MergeCols.Add("产品型号")
    .MergeSort = "加工商名称,产品名称,产品规格,产品型号"
    .AllowMerge = True
End With
If Tables(e.form.Name & "_Table1").rows.count=0
    Tables(e.form.Name & "_Table1").GrandTotal = False
Else
    Tables(e.form.Name & "_Table1").Cols("计划数").GrandTotal = True
    Tables(e.form.Name & "_Table1").Cols("已交货数量").GrandTotal = True
    Tables(e.form.Name & "_Table1").Cols("未交货数量").GrandTotal = True
    Tables(e.form.Name & "_Table1").GrandTotal = True \'显示合计模式
End If
 
Dim exp As String 
For Each dr As Row In Tables(e.form.Name & "_Table1").rows
exp="单据类别=\'横机\' and 加工商名称=\'" & dr("加工商名称")  & "\' And 产品名称=\'" & dr("产品名称") & "\' And 产品规格=\'" & dr("产品规格") & "\' And 产品型号=\'" & dr("产品型号") & "\'"    
dr("已交货数量")=DataTables("加工收发明细").SQLCompute("Sum(收回数量)",exp)

Next

--  作者:baicaocao
--  发布时间:2025/4/1 15:52:00
--  
DataTables("加工收发明细").SQLCompute("Sum(收回数量)",exp)你这个表,可以提前加载出来,根据你自己上面的条件,加载出来之后,使用DataTables("加工收发明细").Compute("Sum(收回数量)",exp),就不会耗时了。


--  作者:jswjyjf
--  发布时间:2025/4/1 16:00:00
--  
DataTables("加工收发明细")这个表已经加载了
--  作者:有点蓝
--  发布时间:2025/4/1 16:15:00
--  
Tables(e.form.Name & "_Table1").fill("select a.*,b.已交货数量 from (select  加工商名称,产品名称,产品规格,产品型号,sum(发出数量) as 计划数,0 as 已交货数量, 0 as 未交货数量,状态,可超出比例,\'\' As 是否已完成,开单时间  from  {加工计划明细} where 单据状态=\'已审核\' and 单据类别=\'横机\' group by 加工商名称,产品名称,产品规格,产品型号,状态,可超出比例,是否已完成,开单时间) as a left join (select  加工商名称,产品名称,产品规格,产品型号,sum(收回数量) as 已交货数量 from {加工收发明细} group by 加工商名称,产品名称,产品规格,产品型号) as b on a.加工商名称=b.加工商名称 AND a.产品名称=b.产品名称 and a.产品规格=b.产品规格 and a.产品型号=b.产品型号","wjhansdata",True)

去掉Dim exp As String 以及后面所有代码

--  作者:jswjyjf
--  发布时间:2025/4/1 16:30:00
--  
加工商名称 产品名称 产品规格 产品型号 有重复记录的 多算了
--  作者:有点蓝
--  发布时间:2025/4/1 16:36:00
--  
Tables(e.form.Name & "_Table1").fill("select a.*,b.已交货数量 from (select  加工商名称,产品名称,产品规格,产品型号,sum(发出数量) as 计划数,0 as 已交货数量, 0 as 未交货数量,状态,可超出比例,\'\' As 是否已完成,开单时间  from  {加工计划明细} where 单据状态=\'已审核\' and 单据类别=\'横机\' group by 加工商名称,产品名称,产品规格,产品型号,状态,可超出比例,是否已完成,开单时间) as a left join (select  c.加工商名称,c.产品名称,c.产品规格,c.产品型号,sum(c.收回数量) as 已交货数量 from {加工收发明细} as c inner join  {加工计划明细} as  d on c.加工商名称=d.加工商名称 AND c.产品名称=d.产品名称 and c.产品规格=d.产品规格 and c.产品型号=d.产品型号 where d.单据状态=\'已审核\' and d.单据类别=\'横机\' group by c.加工商名称,c.产品名称,c.产品规格,c.产品型号) as b on a.加工商名称=b.加工商名称 AND a.产品名称=b.产品名称 and a.产品规格=b.产品规格 and a.产品型号=b.产品型号","wjhansdata",True)
--  作者:jswjyjf
--  发布时间:2025/4/1 16:43:00
--  
还是有重复 
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2025/4/1 16:45:00
--  
3楼原代码肯定也有重复啊,不同的开单时间,肯定是有多行