如果网络多客户端为同一个表写入记录,怎么用程序写入自动编号 ,如果取最大值网络延时可能会使程序取的最大值重复,本人因为需求必须要手动写入一个ID,使用的是SQL SERVER

解决方案 »

  1.   

    不使自动编号 是自己写的索引值 不是自动编号有下面的小例子在网络中同时运行 该怎么实现Private Sub Command1_Click()
    Set breedconn = New ADODB.Connection
        breedconn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=breed1;Data Source= cyf1"
        breedconn.CursorLocation = adUseServer
        breedconn.ConnectionTimeout = 15
        breedconn.Open
     For i = 0 To 10000
      breedconn.BeginTrans
    If rs1.State = adStateOpen Then rs1.Close
    rs1.Open "select * from www order by id desc", breedconn, adOpenKeyset, adLockOptimistic
     j = rs1.Fields("id")
    rs1.AddNew
    rs1.Fields("id") = j + 1
    rs1.Fields("name") = Text1.Text
    rs1.Update
    breedconn.CommitTrans
    Next
    End Sub
      

  2.   

    我在一个客户端执行时 取得的一个最大值 程序没有将记录UPDATA 另一个客户端又取了相同的最大值, 这样就存在相同的最大值了 在数据表中 就存在相同的字段值了 希望大哥们有时间 在机器上试一下(同时在两个客户端执行上面那个程序)
      

  3.   

    1、你采用锁定的方式打开表
    2、改breedconn.CursorLocation = adUseClient 试试
      

  4.   


    rs1.Open "select * from www order by id desc", breedconn, adOpenKeyset, adLockOptimistic
    改为
    rs1.Open "select * from www order by id desc", breedconn, adOpenKeyset, adLockPessimistic
    试试
      

  5.   

    写成一句即可
    breedconn.Execute "insert into www(id,name) select max(id)+1,'" & Trim(Text1.Text) & "' from www"
    或者将ID字段设为自动增长列