Foxtable(狐表)用户栏目专家坐堂 → 网络状态下自动更新


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

主题:网络状态下自动更新

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
网络状态下自动更新  发帖心情 Post By:2017/6/29 9:04:00 [只看该作者]

这是为了实现网络状态下自动更新的代码,由于使用同一款软件管理不同项目(不同项目使用不同数据库),因此经常报错,我想实现如果使用相同项目(也就是相同数据库)的人之间实现自动保存更新,以下代码应该如何修改?

For Each dt As DataTable In DataTables
    For Each r As DataRow In Dt.DataRows
        If r.RowState = DataRowState.Modified OrElse r.RowState = DataRowState.Added Then
            Dim p As String = IIF(r.RowState = DataRowState.Added, "A#", "U#")
            r.Save()
            '一定要在保存后合成信息,因为新增行的主键在保存后才生成
            Dim msg As String = p & dt.Name & "#" & r("_Identify")
            For Each bd As QQBuddy In QQClient.Buddies
                If bd.Online  Then  
                    QQClient.Send(bd.name, msg)
                End If
            Next
        End If
    Next
    dt.Save()
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/29 9:49:00 [只看该作者]

发送的信息,加上项目的名称

 

Dim msg As String = p & dt.Name & "#" & r("_Identify") & "#" & ApplicationTitle

 

接收到信息以后,判断发过来的信息和自己的ApplicationTitle是否相同即可。


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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2017/10/3 10:52:00 [只看该作者]

以下我设计的网络自动更新的代码,由于有时需要增加很多行,所以增加了黄色代码,目的是增加多行也保存,但是保存时间非常长,平均每行需要0.6秒的时间,这是什么原因,有无改进的办法。

Dim st As Date = Date.Now '将开始时间保存在变量st中
        For Each r As DataRow In DataTables("geer").DataRows
            If r.RowState = DataRowState.Modified OrElse r.RowState = DataRowState.Added Then

                                Dim p As String = IIF(r.RowState = DataRowState.Added, "A#", "U#")
                                r.Save()
                '一定要在保存后合成信息,因为新增行的主键在保存后才生成
                Dim msg As String = p & "geer & "#" & r("_Identify")
                For Each bd As QQBuddy In QQClient.Buddies
                    If bd.Online Then
                        QQClient.Send(bd.name, msg)
                    End If
                Next
            End If
                   Next

        MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")


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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/4 10:44:00 [只看该作者]

统一保存:

Dim drsModified As new List(of DataRow)
Dim drsAdded As new List(of DataRow)

For Each r As DataRow In DataTables("geer").DataRows
    If r.RowState = DataRowState.Modified  Then
        drsModified.Add(r)
    ElseIf r.RowState = DataRowState.Added
        drsAdded.Add(r)
    End If
Next

DataTables("geer").Save

For Each r As DataRow In drsModified
    Dim p As String = "U#"
    Dim msg As String = p & "geer & "#" & r("_Identify")
    For Each bd As QQBuddy In QQClient.Buddies
        If bd.Online Then
            QQClient.Send(bd.name, msg)
        End If
    Next
Next

For Each r As DataRow In drsAdded
    Dim p As String = "A#"
    Dim msg As String = p & "geer & "#" & r("_Identify")
    For Each bd As QQBuddy In QQClient.Buddies
        If bd.Online Then
            QQClient.Send(bd.name, msg)
        End If
    Next
Next

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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/4 10:45:00 [只看该作者]

或者把同一类(修改/新增)的_Identify一次性发送过去

 回到顶部