以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]当前行,各列不为空的个数,如何表达?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57582)

--  作者:rophy0952
--  发布时间:2014/9/26 22:50:00
--  [求助]当前行,各列不为空的个数,如何表达?
请教:在10个不良项目中,如果有两个以上的不良项目栏值不为空,判定为“不合格”。谢谢!如下图:

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


--  作者:y2287958
--  发布时间:2014/9/26 23:00:00
--  
制程判定改为表达式列
设表达式如下:
IIF((IIF([不良项目1] is null,1,0)+IIF([不良项目1] is null,1,0)+IIF([良项目2] is null,1,0)+.....)>1,\'不合格\',\'合格\')

--  作者:rophy0952
--  发布时间:2014/9/27 11:02:00
--  
制程判定列与不良项目列是在不同的表内的,这样的话,表达式如何表达?
--  作者:y2287958
--  发布时间:2014/9/27 11:03:00
--  
上例子
--  作者:rophy0952
--  发布时间:2014/9/27 12:15:00
--  
附例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:问题.foxdb



--  作者:rophy0952
--  发布时间:2014/9/27 16:24:00
--  
有哪位老师可以帮忙回复一下呀?谢谢啦
--  作者:rophy0952
--  发布时间:2014/9/27 22:56:00
--  

我用的是下面的代码,但是无论有值的不良项目列数是几,“制程判定”是值一直是“合格”,无变化,请赐教。

Select Case e.DataCol.Name
Case "第1刀_不良项目","第2刀_不良项目","第3刀_不良项目","第4刀_不良项目","第5刀_不良项目","第6刀_不良项目","第7刀_不良项目","第8刀_不良项目","第9刀_不良项目","第10刀_不良项目"
    For i As Integer = 1 To 10
        Dim v1 As String = e.DataRow("第" & i & "刀_不良项目")
Dim v2 As Integer = DataTables("制程检验记录表").Compute("count(第" & i & "刀_不良项目)","第" & i & "刀_不良项目 <> \'nothing\'")
Dim dr As DataRow = DataTables("半成品检验记录表").find("流水号 = \'"& e.datarow("流水号") &"\'")
        If v2 >= 2 Then
            dr("制程判定") = "不合格"
            Exit For
        Else
            dr("制程判定") = "合格"
        End If
    Next
End Select


--  作者:有点甜
--  发布时间:2014/9/28 9:36:00
--  
Select Case e.DataCol.Name
    Case "第1刀_不良项目","第2刀_不良项目","第3刀_不良项目","第4刀_不良项目","第5刀_不良项目","第6刀_不良项目","第7刀_不良项目","第8刀_不良项目","第9刀_不良项目","第10刀_不良项目"
        Dim count As Integer = 0
        For i As Integer = 1 To 10
            If e.DataRow.IsNull("第" & i & "刀_不良项目") = False Then
                count += 1
            End If
        Next
        Dim dr As DataRow = DataTables("半成品检验记录表").find("流水号 = \'"& e.datarow("流水号") &"\'")
        If count >= 2 Then
            dr("制程判定") = "不合格"
        Else
            dr("制程判定") = "合格"
        End If
End Select

--  作者:rophy0952
--  发布时间:2014/9/28 13:22:00
--  
谢谢有点甜,终于等到你了!