Foxtable(狐表)用户栏目专家坐堂 → 跨表筛选


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

主题:跨表筛选

帅哥哟,离线,有人找我吗?
雅痞123456
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:203 积分:1368 威望:0 精华:0 注册:2017/12/4 15:36:00
  发帖心情 Post By:2018/1/6 16:02:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:丹东隆盛机加管理平台2.table


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


为什么我调试完是这种状态   是哪块有问题吗  老师能否帮过我调试一下啊   开发者密码1    统计工程师密码666666

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 16:15:00 [只看该作者]

测试没有问题,你数据只有一个1月份和一个12月份有数据,当然就是这个结果。填充完整的数据再测试

另外其它列自己补充完整

 If ndr Is Nothing Then
        ndr = DataTables("产品表").AddNew()
        ndr("客户名称") = dr("客户名称")
        ndr("产品种类") = dr("产品种类")
        ……其它列自己补充完整
    End If

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


加好友 发短信
等级:童狐 帖子:203 积分:1368 威望:0 精华:0 注册:2017/12/4 15:36:00
  发帖心情 Post By:2018/1/6 16:44:00 [只看该作者]


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



改完了   他提醒我一个子行有多个父行   我想在在已有的行里的后面直接生成所需要的数据的 而不是重新生成数据   因为产品表我门是先填写价格的  要不是不能用来计算工资的

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 17:02:00 [只看该作者]

我代码是先判断是否有存在的数据,没有才添加的。自己核对一下数据。

如果不需要这么多判断条件,自己改改,学会理解代码,而不只是会抄

Dim ndr As DataRow = DataTables("产品表").Find(CExp("客户名称='{0}' and 产品种类='[1}' and 产品代码='{2}' and 工序代码='{3}' and 产品名称='{4}'",dr("客户名称"),dr("产品种类"),dr("产品代码"),dr("工序代码"),dr("产品名称")))

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


加好友 发短信
等级:童狐 帖子:203 积分:1368 威望:0 精华:0 注册:2017/12/4 15:36:00
  发帖心情 Post By:2018/1/8 11:38:00 [只看该作者]


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

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

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
有点蓝老师您好:  您的教导很对,后来我回去把以前关联表给删除了 从新写了一段跨表引用的代码 ,解决子行有多个父行的问题提醒 ,但测试过程中仍然有一些问题不是我想要的,不知道您能不能再帮我一下  ,让我把这个问题给彻底解决了?图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看

主要是从新统计的数据并不能在原有的基本信息的行后面显示,而是重新录入一个新行,而且运行一次程序,就重新把所有的数据给在列出来一次,并不是在原有的数据进行更新,所以造成数据条太多了而且失去统计的意义了图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/8 11:55:00 [只看该作者]

Dim g As New CrossTableBuilder("统计表1", DataTables("随件卡"))
g.HGroups.AddDef("客户名称")
g.HGroups.AddDef("产品种类")
g.HGroups.AddDef("产品名称")
g.HGroups.AddDef("产品代码")
g.HGroups.AddDef("工序代码")
g.VGroups.AddDef("加工时间", "{0}月")
g.Totals.AddDef("计数数量", "产量")
g.Totals.AddDef("加工数量")
Dim dt As DataTable = g.Build(True)

Dim dict As new Dictionary(of String ,String)
For Each c As DataCol In dt.DataCols
    If c.name.Contains("_") Then
        dict.Add(c.Caption,c.Name)
    End If
Next


Dim yf() As String = {"","一","二","三","四","五","六","七","八","九","十","十一","十二"}
For Each dr As DataRow In dt.DataRows
    Dim filter As String = "1=1"
    If dr.Isnull("客户名称") Then
        filter &= " and 客户名称 is null"
    Else
        filter &= " and 客户名称 = '" & dr("客户名称") & "'"
    End If
    If dr.Isnull("产品种类") Then
        filter &= " and 产品种类 is null"
    Else
        filter &= " and 产品种类 = '" & dr("产品种类") & "'"
    End If
    If dr.Isnull("产品代码") Then
        filter &= " and 产品代码 is null"
    Else
        filter &= " and 产品代码 = '" & dr("产品代码") & "'"
    End If
    If dr.Isnull("工序代码") Then
        filter &= " and 工序代码 is null"
    Else
        filter &= " and 工序代码 = '" & dr("工序代码") & "'"
    End If
    If dr.Isnull("产品名称") Then
        filter &= " and 产品名称 is null"
    Else
        filter &= " and 产品名称 = '" & dr("产品名称") & "'"
    End If
    Dim ndr As DataRow = DataTables("产品表").Find(filter)
    If ndr Is Nothing Then
        ndr = DataTables("产品表").AddNew()
        ndr("客户名称") = dr("客户名称")
    End If
    For Each c As String In dict.Keys
        Dim str() As String = c.Split("_")
        If str(0) = "空" Then Continue For
        Dim yue As String = yf(val(str(0).trim("月"))) & "月分_"
        If str(1) = "产量" Then
            ndr(yue & str(1)) = dr(dict(c))
        Else
            ndr(yue & "合格率") = dr(dict(str(0) & "_产量")) / dr(dict(c))
        End If
    Next
Next


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


加好友 发短信
等级:童狐 帖子:203 积分:1368 威望:0 精华:0 注册:2017/12/4 15:36:00
  发帖心情 Post By:2018/1/12 13:44:00 [只看该作者]


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

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180112133939.png
图片点击可在新窗口打开查看
   
    为什么运行的时候合格率会差那么?  怎么都是100%合格

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/12 15:01:00 [只看该作者]

代码肯定没问题,请认认真真测试。你该一下红色的代码,看生成的数据是否正确。

 

Dim g As New CrossTableBuilder("统计表1", DataTables("随件卡"))
g.HGroups.AddDef("客户名称")
g.HGroups.AddDef("产品种类")
g.HGroups.AddDef("产品名称")
g.HGroups.AddDef("产品代码")
g.HGroups.AddDef("工序代码")
g.VGroups.AddDef("加工时间", "{0}月")
g.Totals.AddDef("计数数量", "产量")
g.Totals.AddDef("加工数量")
g.Build()

Dim dt As DataTable = DataTables("统计表1")
Dim dict As new Dictionary(of String ,String)
For Each c As DataCol In dt.DataCols
    If c.name.Contains("_") Then
        dict.Add(c.Caption,c.Name)
    End If
Next

Dim yf() As String = {"","一","二","三","四","五","六","七","八","九","十","十一","十二"}
For Each dr As DataRow In dt.DataRows
    Dim filter As String = "1=1"
    If dr.Isnull("客户名称") Then
        filter &= " and 客户名称 is null"
    Else
        filter &= " and 客户名称 = '" & dr("客户名称") & "'"
    End If
    If dr.Isnull("产品种类") Then
        filter &= " and 产品种类 is null"
    Else
        filter &= " and 产品种类 = '" & dr("产品种类") & "'"
    End If
    If dr.Isnull("产品代码") Then
        filter &= " and 产品代码 is null"
    Else
        filter &= " and 产品代码 = '" & dr("产品代码") & "'"
    End If
    If dr.Isnull("工序代码") Then
        filter &= " and 工序代码 is null"
    Else
        filter &= " and 工序代码 = '" & dr("工序代码") & "'"
    End If
    If dr.Isnull("产品名称") Then
        filter &= " and 产品名称 is null"
    Else
        filter &= " and 产品名称 = '" & dr("产品名称") & "'"
    End If
    Dim ndr As DataRow = DataTables("产品表").Find(filter)
    If ndr Is Nothing Then
        ndr = DataTables("产品表").AddNew()
        ndr("客户名称") = dr("客户名称")
    End If
    For Each c As String In dict.Keys
        Dim str() As String = c.Split("_")
        If str(0) = "空" Then Continue For
        Dim yue As String = yf(val(str(0).trim("月"))) & "月分_"
        If str(1) = "产量" Then
            ndr(yue & str(1)) = dr(dict(c))
        Else
            ndr(yue & "合格率") = dr(dict(str(0) & "_产量")) / dr(dict(c))
        End If
    Next
Next


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


加好友 发短信
等级:童狐 帖子:203 积分:1368 威望:0 精华:0 注册:2017/12/4 15:36:00
  发帖心情 Post By:2018/1/12 16:16:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:丹东隆盛机加管理平台2.table



图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看为什么我调不出来了?  

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/12 16:48:00 [只看该作者]

去看统计表的数据

  


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180112164739.png
图片点击可在新窗口打开查看

 回到顶部
总数 34 上一页 1 2 3 4 下一页