以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]根据条件获取最大计数(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59383)

--  作者:yyzlxc
--  发布时间:2014/11/3 12:54:00
--  [求助]根据条件获取最大计数(已解决)
在实时采集表DataColChanged事件,一段代码,标记的代码是获取最大计数,当条件设置为日期和工位机ID时,可以实现所需效果,但增加一个条件(作业ID)时,就不能获取最大计数,问题在哪里,请各位老师指教,谢谢!!

Select Case e.DataCol.Name
    \'序号和计数
    Case "日期"
        If e.DataCol.Name = "日期" Then
            If e.DataRow.IsNull("日期") Then
                e.DataRow("序号") = Nothing
            Else
                If e.DataRow.IsNull("序号") Then
                    Dim max,max1 As String \'最大序号
                    Dim idx As Integer
                    max = e.DataTable.Compute("Max(序号)","[_Identify] <> " & e.DataRow("_Identify")) \'取得最大序号
                    If max > "" Then \'如果存在最大序号
                        idx = CInt(max) + 1 \'获得最大序号,并加1
                    Else
                        idx = 1 \'否则序号等于1
                    End If
                    e.DataRow("序号") = idx
                    Dim rq As String = e.DataRow("日期")
                    Dim gwjid As String = e.DataRow("工位机ID")
                    Dim zyid As String = e.DataRow("作业ID")
                    max1 = e.DataTable.Compute("Max(计数)","[日期] = \'"& rq &"\' And [工位机ID] = \'"& gwjid &"\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得最大计数
                    \'max1 = e.DataTable.Compute("Max(计数)","[日期] = \'"& rq &"\' And [作业ID] = \'"& zyid &"\' And [工位机ID] = \'"& gwjid &"\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得最大计数
                    If max1 > "" Then \'如果存在最大计数
                        idx = CInt(max1) + 1 \'获得最大计数,并加1
                    Else
                        idx = 1 \'否则计数等于1
                    End If
                    e.DataRow("计数") = idx
                End If
            End If
        End If
End Select



[此贴子已经被作者于2014-11-3 15:23:30编辑过]

--  作者:有点甜
--  发布时间:2014/11/3 14:01:00
--  

Case "日期"

 

改成

 

Case "日期", "作业ID", "工位机ID"


--  作者:yyzlxc
--  发布时间:2014/11/3 14:42:00
--  
谢谢甜老师的回复,好像不是这个原因,加了一个条件后,max1为空,不知什么原因,请指教,谢谢!!
--  作者:有点甜
--  发布时间:2014/11/3 14:47:00
--  
Select Case e.DataCol.Name
    \'序号和计数
    Case "日期", "作业ID", "工位机ID"
        If e.DataCol.Name = "日期" Then
            If e.DataRow.IsNull("日期") Then
                e.DataRow("序号") = Nothing
            Else
                Dim max,max1 As String \'最大序号
                Dim idx As Integer
                max = e.DataTable.Compute("Max(序号)","[_Identify] <> " & e.DataRow("_Identify")) \'取得最大序号
                If max > "" Then \'如果存在最大序号
                    idx = CInt(max) + 1 \'获得最大序号,并加1
                Else
                    idx = 1 \'否则序号等于1
                End If
                e.DataRow("序号") = idx
                Dim rq As String = e.DataRow("日期")
                Dim gwjid As String = e.DataRow("工位机ID")
                Dim zyid As String = e.DataRow("作业ID")
                \'max1 = e.DataTable.Compute("Max(计数)","[日期] = \'"& rq &"\' And [工位机ID] = \'"& gwjid &"\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得最大计数
                max1 = e.DataTable.Compute("Max(计数)","[日期] = \'"& rq &"\' And [作业ID] = \'"& zyid &"\' And [工位机ID] = \'"& gwjid &"\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得最大计数
                If max1 > "" Then \'如果存在最大计数
                    idx = CInt(max1) + 1 \'获得最大计数,并加1
                Else
                    idx = 1 \'否则计数等于1
                End If
                e.DataRow("计数") = idx
            End If
        End If
End Select

--  作者:yyzlxc
--  发布时间:2014/11/3 14:53:00
--  
应该点击手动采集按钮,计数会增加,但是现在计数一直是1,没有变化。
--  作者:有点甜
--  发布时间:2014/11/3 14:54:00
--  
 看楼上
--  作者:yyzlxc
--  发布时间:2014/11/3 14:59:00
--  
谢谢甜老师的指教,问题是,将老师的代码贴进去,还是原来的情况,计数不会变化。还请指教,谢谢!!
--  作者:有点甜
--  发布时间:2014/11/3 15:02:00
--  
肯定会变化啊
--  作者:有点甜
--  发布时间:2014/11/3 15:02:00
--  
只要填入了对应的值就有变化啊
--  作者:yyzlxc
--  发布时间:2014/11/3 15:04:00
--  
您可以在案例中测试一下,我也觉得很奇怪。