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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10639 威望: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/10 9:33:00 [只看该作者]

改一下

 

max = e.DataTable.Compute("Max(计数)","日期 = #"& rq &"# And 员工ID = '"& ygid &"' And [_Identify] <> " & e.DataRow("_Identify")) '取得最大计数


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10639 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 9:39:00 [只看该作者]

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/10 9:40:00 [只看该作者]

 请认真测试。


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10639 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 9:46:00 [只看该作者]

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

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



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/10 9:51:00 [只看该作者]

 没有问题啊


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10639 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2014/10/10 9:54:00 [只看该作者]

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


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



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/10 9:55:00 [只看该作者]

你要先输入日期,再输入员工ID号。

 

代码改成这样

 

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


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10639 威望: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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/10 10:52:00 [只看该作者]

 不可能是bug,你怎么操作,怎么不正常?我测试很正常啊

 回到顶部
总数 13 1 2 下一页