如何在 MS Access 表单中添加序列号字段

How to Add Serial Number Field in MS Access Form

我在 MS Access 2007 中有一个 Invoice 表单。此表单有一个名为 InvoiceLines 的子表单,其中包含字段 SerialNumberItemNumberItemNameItemQty 等。我想在此表格中添加序列号。我添加了 =CurrentRecord 属性 来显示当前行号。但是这个 属性 在所有行中显示数字“1”。有什么最简单的方法可以在 MS Access 表单中添加序列号吗?

您可以通过更改表单的数据源并在其中添加一个新列来解决此问题。

假设你的 table 被命名为 Table1 并且你的主键是 ID,你可以使用子查询来动态计算它:

SELECT Table1.*, (Select Count(*) FROM Table1 as X WHERE X.ID < Table1.ID)+1 AS Serial FROM Table1

从您的屏幕截图和描述来看,您似乎在描述一个 AutoNumber 字段。

用户无法编辑此类字段,MS Access 将使用数据集中唯一的整数自动填充该字段。这可以用作数据集的主键,并且不受记录排序或删除的影响。

如果您当前的 SerialNumber 字段已经包含数据,您将无法将此字段的数据类型更改为 AutoNumber。因此,在添加数据类型为 AutoNumber.

的新字段之前,您需要删除现有的 SerialNumber 字段

好的,现在知道你想要什么是我的解决方案:

在子表单中添加此过程:

Private Function SerialNumber(ByVal sourceForm As Form) As Variant
    On Error GoTo Catch

    SerialNumber = Null

    With sourceForm.RecordsetClone
        .Bookmark = sourceForm.Bookmark
        SerialNumber = .AbsolutePosition + 1
    End With

Done:
    Exit Function

Catch:
    If Err.Number <> 3021 Then MsgBox Err.Number & ":" & Err.Description, vbExclamation, "SerialNumber"
    Resume Done
End Function

然后在这个子窗体中添加一个文本框控件,并将其Control Source设置为=SerialNumber([Form])

这将满足您的所有需求。

注意:如果您删除了子表单中的记录,则必须刷新子表单以更新序列号。