我是高级开发版开发的程序,设置了服务器端口和客户端。逻辑是客户端某行有修改,就通知服务器,服务器再通知在线的所有人该行有修改,经常会弹出错误。
在服务器的OPENQQ服务端,ReceivedMessage程序如下
If msg.StartsWith("&#") AndAlso msg.EndsWith("#&") Then '通知所有在线客户该表对于的数据需要重新加载 '格式是 &#表名:_Identify#&
For Each User As QQUser In QQserver.Users
QQServer.Send(User.Name,msg)
Next
End If
在客户端的OPENQQ客户端,ReceivedMessage程序如下
Dim msg As String = e.Message
If msg.StartsWith("&#") AndAlso msg.EndsWith("#&") Then '该行数据要加载到系统中
Dim Key As String = msg.SubString(2,msg.Length - 4)
Dim pts() As String = Key.Split(":")
If pts.Length = 3 Then
Dim dr As DataRow = DataTables(pts(1)).Find("[_Identify] = " & pts(2))
If dr IsNot Nothing Then
dr.Load(False) '重新加载此行
' PopMessage(pts(0) & "修改了表:" & pts(1) & pts(2) & "的数据","提示", PopIconEnum.Infomation, 5)
Else
DataTables(pts(1)).AppendLoad("[_Identify] = " & pts(2)) '追载新增加的行
' PopMessage(pts(0) & "增加了表:" & pts(1) & pts(2) & "的数据","提示", PopIconEnum.Infomation, 5)
End If
End If
End If
而某人修改了一行数据,会发信息给服务器。程序如下:
Dim Key As String
key = _UserName & ":" & "资金往来对账流水表" & ":" & dr("_Identify")
QQClient.Send("&#" & key & "#&") '通知其他人这行有修改
会不会是因为服务器同事通知所有在线的人要更新该行导致?大概是十多个人同时使用。非常感谢
图片如下: --- 数据库被用户锁定,不能打开。