Access中可以使用DAO的Recordset的AddNew, LastModified和Book属性。Function GetMaxNo() As Long 'Open db, rs objects... 'add one new record rs.AddNew 'Set the new values for fields rs.Update Set rs.book = rs.LastUpdated GetMaxNo = rs.Fields("AutoNum").Value 'Close the rs and db objects End Function
一,在一个事务里用select max(id) from yourtable 二,新增后set yourID=@@Identity
max(id)大家都用的时候,ID可能得到的是一样的。
你可以写个小程序测试一下。
是否单号问题?看这一贴:
http://www.csdn.net/expert/topic/426/426165.shtm
关键是ADO可不可以锁定数据表。“数据库”说的对,并发问题一定要保证操作的原子性。也就是我需要先锁定数据表,再操作,然后查询得到最大值,再释放锁。
我不知道在ADO里面怎么做,我是用delphi访问。我觉得单号问题把问题搞得复杂了,利用自动增的机制,可以保证不重复,关键还是锁定表。
谁能给出代码?
相比之下,我更喜欢Oracle的Seq,方便。
'Open db, rs objects...
'add one new record
rs.AddNew
'Set the new values for fields
rs.Update
Set rs.book = rs.LastUpdated
GetMaxNo = rs.Fields("AutoNum").Value
'Close the rs and db objects
End Function
二,新增后set yourID=@@Identity