以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 后台统计异常 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186173) |
-- 作者:nuoyan89 -- 发布时间:2023/4/11 9:33:00 -- 后台统计异常 老师,我用以下代码进行统计,出现如图的提示:找不到成品编码列。 Dim sql5 As String = "Sel ect * fr om 生产任务总表 as a5 where exists(sel ect * fro m 生产排产表 as b5 whe re " & Forms("生产排产表").controls("生产排产表").Table.DataTable.LoadFilter & " and a5.成品编码 = b5.成品编码 And a5.生产批次 = b5.生产批次 And a5.使用设备 = b5.使用设备 And a5.加工工序 = b5.加工工序)" Dim b5 As New Gro upTableBuilder("统计表5", sql5, "条码扫描系统数据库") b5.Groups.AddDef("成品编码") \'根据产品分组 b5.Groups.AddDef("生产批次") \'根据产品分组 b5.Groups.AddDef("使用设备") \'根据产品分组 b5.Groups.AddDef("加工工序") \'根据产品分组 b5.Totals.AddDef("剩余天数", AggregateEnum.Count, "生产日期") \'对数量进行统计 Dim dr22 As DataTable = b5.Build(True) Dim dr32 As DataRow For Each dr25 As Row In Tables("生产排产表_生产排产表").Rows dr32 = dr22.find("成品编码 = \'" & dr25("成品编码") & "\' and 生产批次 = \'" & dr25("生产批次") & "\' and 使用设备 = \'" & dr25("使用设备") & "\' and 加工工序 = \'" & dr25("加工工序") & "\' and 生产日期 >= \'" & Date.Today & "\'") If dr32 IsNot Nothing Then dr25("剩余天数") = dr32("剩余天数") End If Next |
-- 作者:有点蓝 -- 发布时间:2023/4/11 9:38:00 -- 到命令窗口执行,然后看看生成的统计表的表结构,都有什么列 Dim sql5 As String = "Sel ect * fr om 生产任务总表 as a5 where exists(sel ect * fro m 生产排产表 as b5 whe re " & Forms("生产排产表").controls("生产排产表").Table.DataTable.LoadFilter & " and a5.成品编码 = b5.成品编码 And a5.生产批次 = b5.生产批次 And a5.使用设备 = b5.使用设备 And a5.加工工序 = b5.加工工序)" Dim b5 As New Gro upTableBuilder("统计表5", sql5, "条码扫描系统数据库") b5.Groups.AddDef("成品编码") \'根据产品分组 b5.Groups.AddDef("生产批次") \'根据产品分组 b5.Groups.AddDef("使用设备") \'根据产品分组 b5.Groups.AddDef("加工工序") \'根据产品分组 b5.Totals.AddDef("剩余天数", AggregateEnum.Count, "生产日期") \'对数量进行统计 b5.Build() |
-- 作者:nuoyan89 -- 发布时间:2023/4/11 10:35:00 -- 老师,异常出现在这个代码,像这种可以怎么改动呢?我最终的目的是想根据这几个条件统计出大于等于当前日期“生产日期”的个数。 b5.Totals.AddDef("剩余天数", AggregateEnum.Count, "生产日期") \'对数量进行统计
|
-- 作者:有点蓝 -- 发布时间:2023/4/11 10:47:00 -- 多看看呗:http://www.foxtable.com/webhelp/topics/0677.htm b5.Totals.AddDef("生产日期", AggregateEnum.Count, "剩余天数")
|
-- 作者:nuoyan89 -- 发布时间:2023/4/11 10:55:00 -- 已处理好了,用了另外一种方式 |
-- 作者:nuoyan89 -- 发布时间:2023/4/18 8:57:00 -- 老师,我用2楼的方式进行了代码测试后,红色代码统计出来的没有问题,但是结果还是不对,如图2。 Dim sql5 As String = "Sel ect * from 生产任务总表 as a5 where exists(sel ect * from 生产排产表 as b5 where " & Forms("生产排产表").controls("生产排产表").Table.DataTable.LoadFilter & " and a5.成品编码 = b5.成品编码 And a5.生产批次 = b5.生产批次 And a5.使用设备 = b5.使用设备 And a5.加工工序 = b5.加工工序 And a5.生产日期 >= \'" & Format(Date.Today, "yyyyMMdd") & "\' )" Dim b5 As New Group TableBuilder("统计表5", sql5, "条码扫描系统数据库") b5.Groups.AddDef("成品编码") \'根据产品分组 b5.Groups.AddDef("生产批次") \'根据产品分组 b5.Groups.AddDef("使用设备") \'根据产品分组 b5.Groups.AddDef("加工工序") \'根据产品分组 b5.Totals.AddDef("生产日期", AggregateEnum.Count, "剩余天数") \'对生产日期进行统计 Dim dr22 As DataTable = b5.Build(True) Dim dr32 As DataRow For Each dr25 As Row In Tables("生产排产表_生产排产表").Rows dr32 = dr22.find("成品编码 = \'" & dr25("成品编码") & "\' and 生产批次 = \'" & dr25("生产批次") & "\' and 使用设备 = \'" & dr25("使用设备") & "\' and 加工工序 = \'" & dr25("加工工序") & "\' and 生产日期 >= \'" & Format(Date.Today, "yyyyMMdd") & "\'") If dr32 IsNot Nothing Then dr25("剩余天数") = dr32("剩余天数") End If Next |
-- 作者:有点蓝 -- 发布时间:2023/4/18 9:07:00 -- 哪一行数据不对? 如果找不到的要清空应该这样 If dr32 IsNot Nothing Then dr25("剩余天数") = dr32("剩余天数") else dr25("剩余天数") = nothing End If |