Foxtable(狐表)用户栏目专家坐堂 → [求助]请看下这段代码哪儿有问题 为何我执行结果不正确


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

主题:[求助]请看下这段代码哪儿有问题 为何我执行结果不正确

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


加好友 发短信
等级:小狐 帖子:392 积分:3026 威望:0 精华:0 注册:2014/9/20 23:56:00
[求助]请看下这段代码哪儿有问题 为何我执行结果不正确  发帖心情 Post By:2014/11/2 17:48:00 [只看该作者]

在搞客户端单点登录 出现点问题

在afteropenproject里添加如下代码

With Tables("用户登录状态表")                '将新登录用户信息写入
    .AddNew
    .Current("user_ID") = User.Name
    .Current("computer_ID") = ComputerId
    .Current("login_time") = Date.Now
    .Current("refresh_time") = Date.Now
    .Current("state") = 1
End With

Dim drs As List(of DataRow)  = DataTables("用户登录状态表").SQLSelect("user_ID = '" & user.Name & "'")
If drs IsNot Nothing Then
    For Each dr As DataRow In drs
        If dr("computer_ID") <> ComputerId Then
            dr("state") = 0
        End If
        If dr("computer_ID") = ComputerId And dr("login_time") <> Tables("用户登录状态表").Current("login_time") Then
            dr("state") = 0
        End If
    Next
End If

执行红色这段 为什么state列为什么不能置0呢




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


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

不理解你的用意

 

With Tables("用户登录状态表")                '将新登录用户信息写入
    .AddNew
    .Current("user_ID") = User.Name
    .Current("computer_ID") = ComputerId
    .Current("login_time") = Date.Now
    .Current("refresh_time") = Date.Now
    .Current("state") = 1
    .Current.Save
End With


Dim drs As List(of DataRow)  = DataTables("用户登录状态表").SQLSelect("user_ID = '" & user.Name & "'")
If drs IsNot Nothing Then
    For Each dr As DataRow In drs
        If dr("computer_ID") <> ComputerId Then
            dr("state") = 0
        End If
        If dr("computer_ID") = ComputerId And dr("login_time") <> Tables("用户登录状态表").Current("login_time") Then
            dr("state") = 0
        End If
    Next
End If


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


加好友 发短信
等级:小狐 帖子:392 积分:3026 威望:0 精华:0 注册:2014/9/20 23:56:00
  发帖心情 Post By:2014/11/2 18:18:00 [只看该作者]

哦 查找记录里有相同用户名的行,如果机器码和本机不同 直接置state为0
机器码与本机相同的 只要不是本次登录的记录 将state置0

每个客户端会周期性刷新记录 同时查看state 如果是0 则提示在其他地方登录 删除自己的记录 然后退出

还会做个服务器端 查询刷新时间 如果某用户异常退出 不刷新了 就清楚记录

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


加好友 发短信
等级:小狐 帖子:392 积分:3026 威望:0 精华:0 注册:2014/9/20 23:56:00
  发帖心情 Post By:2014/11/2 18:22:00 [只看该作者]

试了一下 还是不行啊 在代码里加了msgbox显示 dr("state")是0 但是表里刷还是1

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


加好友 发短信
等级:小狐 帖子:392 积分:3026 威望:0 精华:0 注册:2014/9/20 23:56:00
  发帖心情 Post By:2014/11/2 19:06:00 [只看该作者]

把save加到红色标记的地方才对  不知道为什么会是这样 能解释下修改和存储的过程不  

With Tables("用户登录状态表")                '将新登录用户信息写入
    .AddNew
    .Current("user_ID") = User.Name
    .Current("computer_ID") = ComputerId
    .Current("login_time") = Date.Now
    .Current("refresh_time") = Date.Now
    .Current("state") = 1
End With

Dim drs As List(of DataRow)  = DataTables("用户登录状态表").SQLSelect("user_ID = '" & user.Name & "'")
If drs IsNot Nothing Then
    For Each dr As DataRow In drs
        dr("state") = 0
        If dr("computer_ID") <> ComputerId Then
            dr("state") = 0
            dr.Save()
        End If
        
        If dr("computer_ID") = ComputerId And dr("login_time") <> Tables("用户登录状态表").Current("login_time") Then
            dr("state") = 0
            dr.Save()
        End If
    Next
End If

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


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

Dim drs As List(of DataRow)  = DataTables("用户登录状态表").SQLSelect("user_ID = '" & user.Name & "'")
If drs IsNot Nothing Then
    For Each dr As DataRow In drs
        If dr("computer_ID") <> ComputerId Then
            dr("state") = 0

            dr.Save
        End If
        If dr("computer_ID") = ComputerId And dr("login_time") <> Tables("用户登录状态表").Current("login_time") Then
            dr("state") = 0

            dr.Save
        End If
    Next
End If

 


 回到顶部