访问 VBA:在列中查找最大数并加 1

Posted

技术标签:

【中文标题】访问 VBA:在列中查找最大数并加 1【英文标题】:Access VBA: Find max number in column and add 1 【发布时间】:2012-08-14 09:39:49 【问题描述】:

在我的 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

感谢大家的帮助。

【问题讨论】:

【参考方案1】:

只要该列仅包含没有字母的数值,那么您就可以使用:

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

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

【讨论】:

这在除了单用户环境之外的任何环境中都是极其危险的。 我不知道它这么容易。完美运行,只有 1 行代码。谢谢 @PaoloBernasconi 你不会是这篇文章的唯一读者。 @Remou 很公平,这不是我自己会使用的东西,因为我们都太熟悉了,但这次我想我会让用户看看它是如何为他们工作的,并让他们如果出现错误,请进一步调查,老实说,我很懒惰。我将添加一些解释。 @PaoloBernasconi 理想的方法是没有任何意义的字段,然后可以通过自动编号提供下一个数字。如果你必须有一个序列很重要的字段,你需要更多的代码和一个小表来保存种子。【参考方案2】:

关于获取序列号的一些说明。这需要引用 Microsoft ActiveX 数据对象 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

【讨论】:

以上是关于访问 VBA:在列中查找最大数并加 1的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA - 搜索范围和连接的 SQL ADODB 记录集以在列中匹配写入结果集

将行与标题进行比较,然后在列中插入值并在 VBA 中进行重复检查

Excel VBA代码查找列中的最大单元格值并删除其下方的所有行

尝试在 A 列中查找 B 列的实例数并在子查询中输出结果

在列中查找字母并提取包含特定字母的行

在列中查找最小值