这样一个需求,多用户同时输入学生数据,取数据库最后一位学生的学号加一作为新学生的学号,然后添加其它信息保存。
发生两种状况:
1、出现不同学生同一学号的问题;
2、同一学生保存了多次的问题
各位GGJJDDMM有甚见解?

解决方案 »

  1.   

    学号设置为主健,然后添加用事务处理,执行sql语句添加
    Public Function Exsql(ParamArray sql()) As Boolean
    On Error Resume Next'事务执行1个sql语句
       Dim cnConn As ADODB.Connection
       Set cnConn = New ADODB.Connection
        Dim mysql
        On Error GoTo err1   cnConn.Open CN'cn是连接字符串
       cnConn.BeginTrans '开始一个事务
       
       For Each mysql In sql
            cnConn.Execute mysql
       Next
       cnConn.CommitTrans '提交一个事物
       
       Set cnConn = Nothing
       Exsql = True
       Exit Function
    err1:
        cnConn.RollbackTrans '回滚一个事物
        Exsql = False
    End Function
      

  2.   

    返回true为成功,faluse不成功,可以同时输入多条
      

  3.   

    1 数据库的锁,锁的都是更新,不锁读取。所以多个客户可以读取同一个最后记录,只要他们还没有更新。建议添加一张表,LastNumber,只有一条记录。客户端读取到 LastNumber 表的最后学号后,用加一得到的新学号更新 LastNumber 表。如果更新成功,此号有效。否则重新读取。2 学生表建立一个多字段(把能够识别统一学生的字段都包含进去)唯一索引,不允许重复记录(会引起一个错误)。当然你需要 On Error 拦截错误,不使程序退出。
      

  4.   

    关于问题1还有多说一句。最好是将 LastNumber 单独存放在一个数据库中,客户独占打开,更新后立即关闭释放。