Foxtable(狐表)用户栏目专家坐堂 → 跨表统计


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

主题:跨表统计

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/25 16:24:00 [显示全部帖子]


"原材料采购明细表"datacolchanged事件

Select Case e.DataCol.Name
    Case
 "
到齐"
        
Dim pr As DataRow
        pr = 
DataTables("
预算清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
        If
 pr IsNot Nothing Then
            DataTables
("
预算清单").DataCols("预算编号").RaiseDataColChanged(pr)
        End
 If
End
 Select

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/25 17:05:00 [显示全部帖子]

和这里代码没有关系,检查其它地方代码

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 11:11:00 [显示全部帖子]

开发者密码?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 11:54:00 [显示全部帖子]

代码的逻辑有问题,总共判断了3个表,但是代码是先后的顺序,并不是同时满足,或者满足其中一个的关系。

这种代码最终只有最后一段有效,也就是判断"电气外购件采购明细表"这个表,前面2个表的判断完全没有用处的

Select Case e.DataCol.name
    Case "预算编号"
        If e.DataRow.IsNull("预算编号") Then
            DataTables("原材料采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
            e.DataRow("当前进展_完成") = False
        Else
            MsgBox("count=" & e.DataRow.GetChildRows("原材料采购明细表").Count)
            If e.DataRow.GetChildRows("原材料采购明细表").Count > 0
                Dim cnt As Integer = DataTables("原材料采购明细表").Compute("count(预算编号)", "预算编号='" & e.NewValue & "' and (到全 = False )")
                MsgBox("cnt=" & cnt)
                e.DataRow("当前进展_完成") = (cnt=0)
            End If
        End If
End Select

Select Case e.DataCol.name
    Case "预算编号"
        If e.DataRow.IsNull("预算编号") Then
            DataTables("机械外购件采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
            e.DataRow("当前进展_完成") = False
        Else
            If e.DataRow.GetChildRows("机械外购件采购明细表").Count > 0
                Dim cnt As Integer = DataTables("机械外购件采购明细表").Compute("count(预算编号)","预算编号='" & e.NewValue  & "' and (到全 = False)")
                e.DataRow("当前进展_完成") = (cnt=0)
            End If
        End If
End Select

Select Case e.DataCol.name
    Case "预算编号"
        If e.DataRow.IsNull("预算编号") Then
            DataTables("电气外购件采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
            e.DataRow("当前进展_完成") = False
        Else
            If e.DataRow.GetChildRows("电气外购件采购明细表").Count > 0
                Dim cnt As Integer = DataTables("电气外购件采购明细表").Compute("count(预算编号)","预算编号='" & e.NewValue  & "' and (到全 = False)")
                e.DataRow("当前进展_完成") = (cnt=0)
            End If
        End If
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 13:12:00 [显示全部帖子]

3个表同时查,然后3个表查询结果加起来等于0

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 13:57:00 [显示全部帖子]

        Else
Dim cnt As Integer =0
            If dr2.GetChildRows("原材料采购明细表").Count > 0
                cnt  = DataTables("原材料采购明细表").Compute("count(预算编号)", "预算编号='" & e.NewValue & "' and (到全 = False )")
End If
                If dr2.GetChildRows("机械外购件采购明细表").Count > 0
                    Dim cnt1 As Integer = DataTables("机械外购件采购明细表").Compute("count(预算编号)", "预算编号='" & e.NewValue & "' and (到全 = False )")
cnt  =cnt  +cnt1 
End If
                    If dr2.GetChildRows("电气外购件采购明细表").Count > 0
                        Dim cnt2 As Integer = DataTables("电气外购件采购明细表").Compute("count(预算编号)", "预算编号='" & e.NewValue & "' and (到全 = False )")
cnt  =cnt  +cnt2 
                    End If
dr2("当前进展_完成") = (cnt = 0)
        End If
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 14:40:00 [显示全部帖子]

上面代码会触发预算编号,然后下面这种代码一样有逻辑问题,
1、find没有任何作用
2、会无条件新增一行

Select Case e.DataCol.name
    Case "预算编号","物资说明"
        If e.DataRow.IsNull("预算编号") = True OrElse e.DataRow.IsNull("物资说明") = True Then
            DataTables("原材料采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
        Else
            Dim ndr1 As DataRow = DataTables("原材料采购明细表").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
            If e.DataRow("物资说明") = "原材料" Then
                Dim ndr As Row = Tables("原材料采购明细表").AddNew
                ndr("内部合同编号") = e.DataRow("内部合同编号")
                ndr("预算编号") = e.DataRow("预算编号")
                ndr("生产令号") = e.DataRow("生产令号")
                ndr("项目名称") = e.DataRow("项目名称")
                ndr("物资说明") = e.DataRow("物资说明")
                ndr("编制人") = e.DataRow("编制人")
                ndr("取消采购") = e.DataRow("取消采购")
                ndr.Move(0)
                ndr("_sortkey") = DataTables("原材料采购明细表").sqlcompute("min([_sortkey])") - 0.00000001
            ElseIf e.DataCol.name = "物资说明" AndAlso e.OldValue = "原材料"
                DataTables("原材料采购明细表").deletefor("预算编号 = '" & e.DataRow("预算编号") & "'")
            End If
        End If
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 16:03:00 [显示全部帖子]

15楼这种到底要做什么功能?

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 16:26:00 [显示全部帖子]

根据这个分类到各个子表中生成行】-- 生成多少行?每次"预算编号"触发都新增 一行?

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111374 积分:566934 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/26 16:36:00 [显示全部帖子]

判断一下ndr1不是空的,就不要新增了

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