Foxtable(狐表)用户栏目专家坐堂 → [求助]选择非今天日期时,计数代码失效(已解决)


  共有3249人关注过本帖树形打印复制链接

主题:[求助]选择非今天日期时,计数代码失效(已解决)

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]选择非今天日期时,计数代码失效(已解决)  发帖心情 Post By: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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb



[此贴子已经被作者于2014-10-10 13:38:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 9:39:00 [显示全部帖子]

谢谢甜老师的回复,代码修改后,好像不起作用,依然如故,还请指教,谢谢!!

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 9:46:00 [显示全部帖子]

测试后,依旧如故,上传修改后的项目。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb



 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 9:54:00 [显示全部帖子]

那我把有数据的项目上传,求解。谢谢甜老师!!


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb



 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 11:06:00 [显示全部帖子]

操作方法:将表内数据全部删除,选择10月9日,连续点击手工数据按钮5下,然后选择10月10日,连续点击手工数据按钮5下,再选择10月11日,连续点击手工数据按钮5下。计数列的数据是:10月9日全部是1;10月10日是1-5,正常。10月11日全部是6。请甜老师测试一下,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 13:38:00 [显示全部帖子]

终于搞明白了,将计数代码整合到序号的代码中,可以达到使用效果,谢谢甜老师的指教。再次感谢!!

 回到顶部