Foxtable(狐表)用户栏目专家坐堂 → [求助]统计问题


  共有2202人关注过本帖树形打印复制链接

主题:[求助]统计问题

帅哥哟,离线,有人找我吗?
陈卫
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
[求助]统计问题  发帖心情 Post By:2015/11/27 9:12:00 [只看该作者]

专家您好:我在“在制品统计表”中的表事件datacolchanged中编写如下代码,统计“生产安排表”表中的数据:
Select Case e.DataCol.Name
    Case "执行合同编号","日期"
        Dim dc As DataRow = e.DataRow
        
        Dim filter1 As String
        If e.DataCol.name = "产品去向" Then '判断一个列名为"产品去向"的列
            If e.DataRow.IsNull(DataTables("生产安排表").DataCols("产品去向")) Then '如果在"生产安排表"的"产品去向"列不是空值
                If e.DataRow(DataTables("生产安排表").DataCols("产品去向"))="锻造" Then ‘如果在"生产安排表"的"产品去向"列等于"锻造"
                    filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '下料'"
                    Dim s1 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
                    filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '杆体探伤'"
                    Dim s2 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
                    filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '双曲线矫直机'"
                    Dim s3 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
                    dc("下料矫直转出_锻造转入_根") = s1+s2+s3
                End If
            End If
        End If
end Select
运行后没有输出结果,问题出在哪里?

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/27 9:27:00 [只看该作者]

1. If e.DataCol.name = "产品去向" Then 条件判断永远为假,因为前面已经Case "执行合同编号","日期"

 

2. e.DataRow.IsNull 只能判断事件所在的表,也就是制品统计表的值,不能去判断其它表的值

 

不明白楼上统计的条件是什么,可以这样试试

Select Case e.DataCol.Name
    Case "执行合同编号","日期"
        Dim dc As DataRow = e.DataRow
       
        Dim filter1 As String
       
        filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '下料' and 产品去向 = '锻造'"
        Dim s1 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '杆体探伤' and 产品去向 = '锻造'""
        Dim s2 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '双曲线矫直机' and 产品去向 = '锻造'""
        Dim s3 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        dc("下料矫直转出_锻造转入_根") = s1+s2+s3
       
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
陈卫
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/27 9:39:00 [只看该作者]

谢谢二楼专家,问题解决了。看来跨表判断不能在本表中用e.DataRow.IsNull ,我还有类似的判断,也只能用上面的方法了。

 回到顶部
帅哥哟,离线,有人找我吗?
陈卫
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/27 10:55:00 [只看该作者]

请教专家,与刚才的问题类似,我在“在制品统计表”中的表事件datacolchanged中编写如下代码,统计“生产安排表”表中的数据:
Select Case e.DataCol.Name
    Case "执行合同编号","日期"
        Dim dc As DataRow = e.DataRow  
        Dim filter1 As String
        filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '机加%' and 贸易性质_内贸 = false"   '机加类设备干的产品如果不是内贸的
        Dim c1 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        dc("机加转出_摆差转入_根") = c1
filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '机加%' and 级别 = 'HY'"  机加类设备干的产品如果级别是“HY”的
        Dim c2 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        dc("机加转出_高频转入_根") = c2
 filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '机加%' and 贸易性质_内贸 = true and 级别 <> 'HY'"  机加类设备干的产品如果既不是外贸,级别又不是“HY”的
        Dim c3 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        dc("机加转出_浸漆转入_根") = c3
        
End Select

运行后没有输出结果,问题出在哪里?


[此贴子已经被作者于2015/11/27 10:56:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 11:08:00 [只看该作者]

加入msgbox弹出c1、c2、c3的值,看是否正确。

 

你要修改编号或日期才会触发datacolchanged事件的啊。


 回到顶部
帅哥哟,离线,有人找我吗?
陈卫
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/27 11:35:00 [只看该作者]

加入msgbox,弹出的窗口,没有数据。表和编码如下:
生产安排表:
图片点击可在新窗口打开查看此主题相关图片如下:11122.bmp
图片点击可在新窗口打开查看
在制品表没法传了,另传
Select Case e.DataCol.Name
    Case "执行合同编号","日期"
        Dim dc As DataRow = e.DataRow
        Dim filter1 As String
     
        filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '机加%' and 贸易性质_内贸 = false"
        Dim c1 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        MessageBox.Show(c1)
        dc("机加转出_摆差转入_根") = c1
       
        filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '机加%' and 级别 = 'HY'"
        Dim c2 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 ) 
        MessageBox.Show(c2)
        dc("机加转出_高频转入_根") = c2
        
        filter1 = "执行合同编号 = '" & dc("执行合同编号") & "' And 日期 = '" & dc("日期") & "' and 工位 like '机加%' and 贸易性质_内贸 = true and 级别 <> 'HY'"
        Dim c3 = DataTables("生产安排表").Compute("SUM(实际完成数量)",filter1 )
        MessageBox.Show(c3)
        dc("机加转出_浸漆转入_根") = c3        
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
陈卫
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/27 11:42:00 [只看该作者]

这是在制品表


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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 11:49:00 [只看该作者]

重置列

 

http://www.foxtable.com/help/topics/1587.htm

 

[此贴子已经被作者于2015/11/27 11:49:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
陈卫
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2015/11/27 11:51:00 [只看该作者]

找到问题了,搞错了一个字符,不是"机加%",是“车床%”。没问题了

 回到顶部