以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]根据条件获取最大计数(已解决) (http://foxtable.com/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 -- 您可以在案例中测试一下,我也觉得很奇怪。 |