以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于通过QQopen实现网络编号的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=90777)

--  作者:9602084
--  发布时间:2016/9/21 15:25:00
--  [求助]关于通过QQopen实现网络编号的问题
服务器端 receivedmessage 代码如下
Dim msg As String = e.Message
If msg.StartsWith("##") And msg.EndsWith("##") Then  \'收到请求档案编号信号
    Dim key As String = msg.Substring(2,msg.length -4)
    msg = "OK##"
    Dim dr As DataRow
    If key Like "######"Then
        dr= DataTables("档案编号统计").find("档案编号 = \'" & keys(0) & "\'")
        If dr IsNot Nothing Then
            dr("数量") = dr("数量") +1
            For i As Integer=  dr("数量") To 1 Step -1
                If dr("顺序号登记").contains( format(i,"00") & "|" ) = False Then
                    msg = msg & ";" & Format(i,"00")
                    dr("顺序号登记") = dr("顺序号登记") & format(i,"00") & "|"
                    Exit For
                End If
            Next
        Else
            Tables("档案编号统计").addnew
            Tables("档案编号统计").Current("档案编号") = keys(0)
            Tables("档案编号统计").Current("数量") = 1
            Tables("档案编号统计").Current("顺序号登记")  = "01|"
            msg =msg &  ";01"
        End If
    Else
        msg = key & ":不符合要求,无法正常编号!"
        Exit For
    End If
    e.ReturnValue = msg
End If

客户端 beforesavedatarow 代码如下


Dim dr As DataRow = e.DataRow

Dim msg As String = "##" & dr("档案编号") & "##"

msg = QQClient.SendWait(msg,5)

If msg.StartsWith("OK##") Then

    dr("档案编号") = dr("档案编号") & "-" & msg.SubString(4).Trim(";")

Else

    e.Cancel = True

End If


问题:

测试表共2列:姓名、档案编号,共267行数据


当在一个客户端执行datatables("测试").save 时,保存完用时近60秒。相同的测试数据,当两个客户端同时执行datatables(“测试”).save 时,每个客户端保存完用时都在15秒左右。这个时间差是哪产生的?





--  作者:狐狸爸爸
--  发布时间:2016/9/21 16:12:00
--  

网络编号,建议增加一行就保存一行,在这个表的DataRowAdded事件编写代码:

 

e.datarow.Save()

 

至于时间差,同等条件下,按道理一个人应该更快,你是反过来,无法理解,也许是间歇性的网速差异造成的吧。