以文本方式查看主题

-  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

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间: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


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2023/4/18 9:07:00
--  
哪一行数据不对?

如果找不到的要清空应该这样
                If dr32 IsNot Nothing Then
                    dr25("剩余天数") = dr32("剩余天数")
else
dr25("剩余天数") = nothing
                End If