在我的Access数据库中,我有一个名为“Demande”的表。我想阅读“Numero de Commande”列中的所有记录,并读取列中的最大数字,以便我可以将该数字用于下一个新记录。
所以这是我的表:
关键指数适用于Numero de Commande。
这是我目前的代码:
Dim highestInt as Integer
Dim newNumeroCommande as Integer
Set currentDatabase = CurrentDb
Set rstDemande = currentDatabase.OpenRecordset("Demande")
' Find the highest integer in the column "Numero de Commande"
newNumeroCommande = highestInt + 1
rstDemande.AddNew
rstDemande("Numero de Commande").Value = newNumeroCommande
rstDemande.Update
感谢您的帮助。
答案 0 :(得分:4)
只要该列只包含没有alpha的数值,您就可以使用:
NewNumeroCommande = Dmax("[Numero de Commande]", "Demande") + 1
注意:这不是我推荐的方法,只是一个内置的Access选项,如果可能的话,你可以通过使用自动编号来节省自己的麻烦,或者你可以有一个单独的“计数器”表,记录最高记录数字,当你想创建另一个时,你可以锁定这个表,将值增加一个(然后使用它),然后释放锁,这在多用户环境中会更有效。
答案 1 :(得分:4)
获取序列号的一些注意事项。这需要引用Microsoft ActiveX Data Objects x.x Library
序列号
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
Dim lngResult As Long
Dim strCon As String
lngResult = 0 'assume fail
strCon = "Provider=" ''Connection to back-end
cn.Open strCon
rs.CursorType = adOpenKeyset
rs.LockType = adLockPessimistic
rs.CursorLocation = adUseServer
''Where BEInfo is a single line table
strSQL = "SELECT ASeqNumber FROM BEInfo"
rs.Open strSQL, cn, , , adCmdText
'Note this is ADO, so no rs.Edit
rs!ASeqNumber = rs!ASeqNumber + 1
rs.Update
lngResult = rs!ASeqNumber
''This should not happen, but just to be sure
If DCount("ASeqNumber", "Table", "ASeqNumber=" & lngResult) > 0 Then
lngResult = 0
End If