Ms access 访问VBA:在列中查找最大值并添加1

Ms access 访问VBA:在列中查找最大值并添加1,ms-access,find,vba,Ms Access,Find,Vba,在Access数据库中,我有一个名为“Demande”的表。我想读取“命令数字”列中的所有记录,并读取该列中的最大数字,以便在下一条新记录中使用该数字 这是我的桌子: 关键索引用于命令编号 这是我目前的代码: Dim highestInt as Integer Dim newNumeroCommande as Integer Set currentDatabase = CurrentDb Set rstDemande = currentDatabase.OpenRecordset("

在Access数据库中,我有一个名为“Demande”的表。我想读取“命令数字”列中的所有记录,并读取该列中的最大数字,以便在下一条新记录中使用该数字

这是我的桌子:

关键索引用于命令编号

这是我目前的代码:

 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

谢谢您的帮助。

只要列中只包含不包含字母的数值,您就可以使用:

NewNumeroCommande = Dmax("[Numero de Commande]", "Demande") + 1

注意:这不是我推荐的方法,只是一个内置的访问选项,如果可能的话,您可以使用自动编号来省去麻烦,或者您可以有一个单独的“计数器”表来记录最高的记录编号,当您希望创建另一个时,您可以锁定此表,将值增加一个(然后使用此选项)然后释放锁,这在多用户环境中会更有效。

有关获取序列号的一些说明。这需要参考Microsoft ActiveX Data Objects x.x库

序列号

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

这在任何情况下都是非常危险的,除了单用户环境。我不知道它这么简单。工作非常完美,只有一行代码。谢谢you@PaoloBernasconi你不会是这篇文章的唯一读者。@Remou很公平,这不是我会使用自己的东西,因为我们都太熟悉了,但这次我想我会d允许用户查看它是如何为他们工作的,并让他们进一步调查是否出现了错误,老实说,我是懒惰的。我将添加一些解释。@PaoloBernasconi理想的方法是没有任何意义的字段,然后下一个数字可以由autonumber提供。如果您必须有一个序列很重要的字段,您需要多一点代码和一个小表来保存种子。