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
我重新输入了一些数据然后用上面的程序测试了一下 能够正常运行 但是产品合格率的运行结果还是不对 是不是方程式错误啊
此主题相关图片如下:1.png