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


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

主题:跨表筛选

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/5 20:13:00 [显示全部帖子]

加工时间如何填?增加一行数据的时候就填?http://www.foxtable.com/webhelp/scr/0630.htm

如何判断是最后一序?Datacolchanged事件判断工序有数据的时候就到产品表查询是否是最后一序,如果是就填入批次

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 8:58:00 [显示全部帖子]


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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 10:28:00 [显示全部帖子]

如何判断是最后一序?批次代码生成的规则是什么?

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 10:41:00 [显示全部帖子]

意思是只要有“包装”这2个字的就是算是最后一序?

意思是批次代码没有什么规则,随便写,12345也可以?


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


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

Select e.DataCol.Name
    Case "加工时间","产品代码","工序代码"
        If e.DataRow.IsNull("加工时间") OrElse e.DataRow.IsNull("产品代码") OrElse e.DataRow.IsNull("工序代码") OrElse e.DataRow("工序代码").Contains("包装") = False  Then
            e.DataRow("产品批次代码") = Nothing
        Else
            Dim d As Date = e.DataRow("加工时间")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,m,1) '获得该月的第一天
            Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
            Dim bh As String = e.DataRow("产品代码") & "-" & Format(d,"yyyyMM") & "-" '生成编号的前缀
            If e.DataRow("产品批次代码").StartsWith(bh) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "产品代码 = '"& e.DataRow("产品代码") & "' And 加工时间 >= #" & fd & "# And 加工时间 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(产品批次代码)",flt) '取得该月的相同工程代码的最大单据编号
                If max > "" Then '如果存在最大单据编号
                    idx = CInt(max.Substring(12,4)) + 1 '获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("产品批次代码") = bh & Format(idx,"0000")
            End If
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 14:35:00 [显示全部帖子]

不管年份,只要是1月份的就合并统计?

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 15:29: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 ndr As DataRow = DataTables("产品表").Find(CExp("客户名称='{0}' and 产品种类='[1}' and 产品代码='{2}' and 工序代码='{3}' and 产品名称='{4}'",dr("客户名称"),dr("产品种类"),dr("产品代码"),dr("工序代码"),dr("产品名称")))
    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

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 15:43:00 [显示全部帖子]

做个窗口按钮,或者到命令窗口运行

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/6 15:50:00 [显示全部帖子]

日志列的长度不够,改为备注列

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


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望: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

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