以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]选择非今天日期时,计数代码失效(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=58016) |
||||
-- 作者:yyzlxc -- 发布时间:2014/10/10 9:20:00 -- [求助]选择非今天日期时,计数代码失效(已解决) 代码目的,对同一日期和员工ID的记录进行计数,在“实时采集”表的DataColChanged事件如下代码,点击手工数据按钮,可以在指定日期增加一组数据(从采集模板表复制),并在计数列显示当天的第几组数据。 问题:只有选择今天的日期,计数正常;否则计数失效。如何解决,请各位老师指教,谢谢! Case "员工ID" If e.DataCol.Name = "员工ID" Then If e.DataRow.IsNull("员工ID") Then e.DataRow("计数") = Nothing Else If e.DataRow.IsNull("计数") Then Dim max As String \'最大计数 Dim idx As Integer Dim rq As String = e.DataRow("日期") Dim ygid As String = e.DataRow("员工ID") max = e.DataTable.Compute("Max(计数)","日期 = \'"& rq &"\' And 员工ID = \'"& ygid &"\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得最大计数 If max > "" Then \'如果存在最大计数 idx = CInt(max) + 1 \'获得最大计数,并加1 Else idx = 1 \'否则计数等于1 End If e.DataRow("计数") = idx End If End If End If
[此贴子已经被作者于2014-10-10 13:38:38编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/10/10 9:33:00 -- 改一下
max = e.DataTable.Compute("Max(计数)","日期 = #"& rq &"# And 员工ID = \'"& ygid &"\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得最大计数 |
||||
-- 作者:yyzlxc -- 发布时间:2014/10/10 9:39:00 -- 谢谢甜老师的回复,代码修改后,好像不起作用,依然如故,还请指教,谢谢!! |
||||
-- 作者:有点甜 -- 发布时间:2014/10/10 9:40:00 -- 请认真测试。 |
||||
-- 作者:yyzlxc -- 发布时间:2014/10/10 9:46:00 -- 测试后,依旧如故,上传修改后的项目。 |
||||
-- 作者:有点甜 -- 发布时间:2014/10/10 9:51:00 -- 没有问题啊 |
||||
-- 作者:yyzlxc -- 发布时间:2014/10/10 9:54:00 -- 那我把有数据的项目上传,求解。谢谢甜老师!! |
||||
-- 作者:有点甜 -- 发布时间:2014/10/10 9:55:00 -- 你要先输入日期,再输入员工ID号。
代码改成这样
Case "员工ID" |
||||
-- 作者:yyzlxc -- 发布时间:2014/10/10 10:50:00 -- 将下面的代码加在按钮中,问题解决,谢谢甜老师的指教,但估计可能是DataColChanged事件的一个bug,待考证。 For Each dr As DataRow In DataTables("实时采集").DataRows If dr.IsNull("日期") Then dr("计数") = Nothing Else If dr.IsNull("计数") Then Dim max As String \'最大编号 Dim idx As Integer Dim rq As String = dr("日期") Dim ygid As String = dr("员工ID") max = DataTables("实时采集").Compute("Max(计数)","日期 = \'"& rq &"\' And 员工ID = \'"& ygid &"\' And 序号 <> " & dr("序号")) \'取得最大计数 If max > "" Then \'如果存在最大计数 idx = CInt(max) + 1 \'获得最大计数,并加1 Else idx = 1 \'否则顺序号等于1 End If dr("计数") = idx End If End If Next
|
||||
-- 作者:有点甜 -- 发布时间:2014/10/10 10:52:00 -- 不可能是bug,你怎么操作,怎么不正常?我测试很正常啊 |