Foxtable(狐表)用户栏目专家坐堂 → 统计数据不准


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

主题:统计数据不准

美女呀,离线,留言给我吧!
nuoyan89
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
统计数据不准  发帖心情 Post By:2022/2/13 21:01:00 [只看该作者]


老师,以下代码写在表事件里的(表事件代码1),根据条件在工序跟踪表中引用如图2,条件都满足,但是加工数量不统计如图1,有些统计了确老是少几个?表事件代码2里的代码也不起作用,请帮忙看看
表事件代码1:
If e.DataCol.Name  = "成品编码" OrElse e.DataCol.Name = "生产批次" OrElse e.DataCol.Name = "加工工序" OrElse e.DataCol.Name = "加工次数" OrElse e.DataCol.Name = "使用设备" OrElse e.DataCol.Name = "加工工序"   OrElse e.DataCol.Name = "配刀单号"   OrElse e.DataCol.Name = "实际领刀日期"  Then
    Dim Filter As String = "[成品编码] = '" & e.DataRow("成品编码") & "' and [生产批次] = '" & e.DataRow("生产批次") & "' and [加工工序] = '" & e.DataRow("加工工序")    & "' and [加工次数] = '" & e.DataRow("加工次数") & "' and [使用设备] = '" & e.DataRow("使用设备")& "' and [配刀单号] = '" & e.DataRow("配刀单号")& "'and [扫描日期] < ='" & e.DataRow("还刀日期")& "'and [扫描日期] >= '" & e.DataRow("实际领刀日期") & "'"
    e.DataRow("加工数量") = DataTables("工序跟踪表").SQLCompute("Sum(合格品)", Filter)
End If
事件表代码2
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("加工工序")  OrElse dr.IsNull("配刀单号") OrElse dr.IsNull("还刀日期") Then
            Dim filter As String
            filter = "生产批次 = '" & dr("生产批次") & "' And 使用设备 = '" & dr("使用设备") & "' and 加工工序 = '" & dr("加工工序") & "' and 加工次数 = '" & dr("加工次数") & "' and 配刀单号 = '" & dr("配刀单号") & "' and 扫描日期 = '" & dr("还刀日期")& "'"
            pr = DataTables("工序跟踪表").SQLFind(filter)
            If pr IsNot Nothing Then
                dr("还刀人员") = pr("姓名")
            End If
        End If
End Select


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

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



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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/13 21:22:00 [只看该作者]

这些条件列不能有空值,sql添加条件后是不会计算条件是空值的列的。

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2022/2/13 21:26:00 [只看该作者]

我检查了没有空值,我把项目重启后这个可以算了,但在点击另一条记录时又出现这种情况了,项目又重启又可以了,继续点击又出现记录不准

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/13 21:30:00 [只看该作者]

如果是指(表事件代码1),如果没有空值,那么就是哟数据没有保存,SQLCompute只能统计已保存的数据

如果是指(表事件代码2)肯定100%有空值。

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2022/2/14 0:17:00 [只看该作者]

DataTables("工序跟踪表").save()
If e.DataCol.Name = "成品编码" OrElse e.DataCol.Name = "生产批次" OrElse e.DataCol.Name = "加工工序" OrElse e.DataCol.Name = "加工次数" OrElse e.DataCol.Name = "使用设备" OrElse e.DataCol.Name = "加工工序" OrElse e.DataCol.Name = "配刀单号" OrElse e.DataCol.Name = "实际领刀日期" Then
    Dim Filter As String = "[成品编码] = '" & e.DataRow("成品编码") & "' and [生产批次] = '" & e.DataRow("生产批次") & "' and [加工工序] = '" & e.DataRow("加工工序") & "' and [加工次数] = '" & e.DataRow("加工次数") & "' and [使用设备] = '" & e.DataRow("使用设备")& "' and [配刀单号] = '" & e.DataRow("配刀单号")& "'and [扫描日期] < ='" & e.DataRow("还刀日期")& "'and [扫描日期] >= '" & e.DataRow("实际领刀日期") & "'"
    e.DataRow("加工数量") = DataTables("工序跟踪表").SQLCompute("Sum(合格品)", Filter)
     e.datarow.save()
End If
事件表代码2
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("加工工序") OrElse dr.IsNull("配刀单号") OrElse dr.IsNull("还刀日期") Then
            Dim filter As String
            filter = "生产批次 = '" & dr("生产批次") & "' And 使用设备 = '" & dr("使用设备") & "' and 加工工序 = '" & dr("加工工序") & "' and 加工次数 = '" & dr("加工次数") & "' and 配刀单号 = '" & dr("配刀单号") & "' and 扫描日期 = '" & dr("还刀日期")& "'"
            pr = DataTables("工序跟踪表").SQLFind(filter)
            If pr IsNot Nothing Then
                dr("还刀人员") = pr("姓名")
                 dr.save()
            End If
        End If
End Select


您的问题就是该保存的没保存就在后台查找数据,此时您看到的符合的条件值在后台并不一定符合!

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2022/2/14 9:54:00 [只看该作者]

请帮忙再看看,打开窗口表后,选中配刀单号,点击刷新,谢谢!加工数量我在原有的窗口表中还是计算不出来,数据都是用的和《管理项目2》中的数据一样的
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar

[此贴子已经被作者于2022/2/14 9:55:37编辑过]

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/14 10:24:00 [只看该作者]

项目数据源设置有问题,无法测试。

其次点击刷新后怎么看结果?什么数据有问题?

另外无法理解下面判断的用途是什么?既然数据没有空值,下面代码又是判断有空值才会进入if里!!

If dr.IsNull("生产批次") OrElse dr.IsNull("使用设备") OrElse dr.IsNull("加工次数") OrElse dr.IsNull("加工工序") OrElse dr.IsNull("配刀单号") OrElse dr.IsNull("还刀日期") Then

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2022/2/14 16:56:00 [只看该作者]

我把代码全部改了,还是不行。现在的状况是原有项目重启,按照改了的代码依然不行,又把原有的窗口表放在新项目测试代码没有问题,原有的项目还是不行,数据源没有变,请帮忙看看

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/14 17:05:00 [只看该作者]

代码看不出有问题。连接不到数据源,无法测试

如果新项目测试没有问题,旧项目有问题,自己比较一下,肯定有不同的地方。检查是不是有其它什么代码影响了

 回到顶部
美女呀,离线,留言给我吧!
nuoyan89
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:442 积分:3067 威望:0 精华:0 注册:2020/10/9 8:45:00
  发帖心情 Post By:2022/2/14 17:10:00 [只看该作者]

老师,现在新的也不行了,不统计了,新的项目里没有其他的代码

 回到顶部
总数 11 1 2 下一页