以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 分组条件设置 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184141) |
-- 作者:nuoyan89 -- 发布时间:2022/11/25 10:28:00 -- 分组条件设置 老师,红色部分中两边的条件必须要一样吗?像返修结果里需要统计包含料废或者工废的能行吗?提示返修结果异常 Dim sql1 As String = "Sel ect * from 过程异常明细 as a1 where exists(sel ect * from 生产排产表 as b1 where " & e.Form.controls("生产排产表").Table.DataTable.LoadFilter & " and a1.成品编码 = b1.成品编码 And a1.生产批次 = b1.生产批次 And a1.使用设备 = b1.使用设备 And a1.加工工序 = b1.加工工序)" Dim b1 As New GroupTableBuilder("统计表2", sql1, "条码扫描系统数据库") b1.Groups.AddDef("成品编码") \'根据产品分组 b1.Groups.AddDef("生产批次") \'根据产品分组 b1.Groups.AddDef("使用设备") \'根据产品分组 b1.Groups.AddDef("加工工序") \'根据产品分组 b1.Totals.AddDef("异常数量") \'对数量进行统计 Dim dt1 As DataTable = b1.Build(True) Dim dr1 As DataRow For Each dr4 As Row In Tables("生产总排产_生产排产表").Rows dr1 = dt1.find("成品编码 = \'" & dr4("成品编码") & "\' and 生产批次 = \'" & dr4("生产批次") & "\' and 使用设备 = \'" & dr4("使用设备") & "\' and 加工工序 = \'" & dr4("加工工序") & "\' And (返修结果 Like \'%料废%\' Or 返修结果 like \'%工废%\')") If dr1 IsNot Nothing Then dr4("报废品") = dr1("异常数量") End If Next |
-- 作者:有点蓝 -- 发布时间:2022/11/25 10:36:00 -- 返修结果是哪个表的列? |
-- 作者:nuoyan89 -- 发布时间:2022/11/25 10:41:00 -- 是过程异常明细的 |
-- 作者:有点蓝 -- 发布时间:2022/11/25 10:59:00 -- Dim sql1 As String = "Sel ect * from 过程异常明细 as a1 where exists(sel ect * from 生产排产表 as b1 where " & e.Form.controls("生产排产表").Table.DataTable.LoadFilter & " and a1.成品编码 = b1.成品编码 And a1.生产批次 = b1.生产批次 And a1.使用设备 = b1.使用设备 And a1.加工工序 = b1.加工工序) And (返修结果 Like \'%料废%\' Or 返修结果 like \'%工废%\')" dr1 = dt1.find("成品编码 = \'" & dr4("成品编码") & "\' and 生产批次 = \'" & dr4("生产批次") & "\' and 使用设备 = \'" & dr4("使用设备") & "\' and 加工工序 = \'" & dr4("加工工序") & "\'")
|
-- 作者:nuoyan89 -- 发布时间:2022/11/25 14:58:00 -- 老师,楼上的代码是针对求和的,那如果我想变更成求最大值和最小值,可以怎么改呢? If e.DataCol.Name = "成品编码" OrElse e.DataCol.Name = "生产批次" Then Dim Filter4 As String = "[成品编码] = \'" & e.DataRow("成品编码") & "\' and [生产批次] = \'" & e.DataRow("生产批次") & "\' and [操作类型] = \'产成入库\'" e.DataRow("实际产出_开始日期") = DataTables("出入库明细").SQLCompute("min(单据日期)", Filter4) e.DataRow("实际产出_结束日期") = DataTables("出入库明细").SQLCompute("max(单据日期)", Filter4) End If |
-- 作者:有点蓝 -- 发布时间:2022/11/25 15:03:00 -- http://www.foxtable.com/webhelp/topics/0677.htm |
-- 作者:nuoyan89 -- 发布时间:2022/11/25 22:08:00 -- 老师,已改好,下面这样的能用1楼的方式优化吗?谢谢 Select Case e.DataCol.Name Case "成品编码", "加工工序", "生产批次", "使用设备" Dim dr As DataRow = e.DataRow Dim pr As DataRow If dr.IsNull("成品编码") OrElse dr.IsNull("加工工序") OrElse dr.IsNull("生产批次") OrElse dr.IsNull("使用设备") Then dr("加工单价") = Nothing Else Dim filter As String filter = "成品编码= \'" & dr("成品编码") & "\' And 加工工序 = \'" & dr("加工工序") & "\' and 生产批次 = \'" & dr("生产批次") & "\' and 使用设备 = \'" & dr("使用设备") & "\'" pr = DataTables("生产排产表").SQLFind(filter) If pr IsNot Nothing Then dr("加工单价") = pr("工序单价") End If End If End Select |
-- 作者:有点蓝 -- 发布时间:2022/11/26 9:06:00 -- 如果是平时录入一行查一行,没有必要。如果是要一次性处理一张表的数据,最好一次性把"生产排产表"需要的数据查处理,然后使用find,或者使用sql更新 [此贴子已经被作者于2022/11/26 9:06:07编辑过]
|
-- 作者:nuoyan89 -- 发布时间:2022/11/26 11:39:00 -- 老师,我这个是一次性处理一张,预计有万把条,如果用SQL的话有参考的吗? |
-- 作者:有点蓝 -- 发布时间:2022/11/26 11:48:00 -- update 表A as a set a.加工单价=b.工序单价 from 生产排产表 as b where a.成品编码= b.成品编码 and a. 加工工序=b. 加工工序 ............... |