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

时间:2018-11-06 10:09:50

标签: ms-access ms-access-2007

我在MS Access 2007中有一个Invoice表单。此表单有一个名为InvoiceLines的子表单,该子表单具有字段SerialNumberItemNumberItemName,{{ 1}}等。我想以这种形式添加序列号。我添加了ItemQty属性来显示当前行号。但是此属性在所有行中显示数字“ 1”。有没有最简单的方法可以在MS Access表单中添加序列号?

enter image description here

3 个答案:

答案 0 :(得分:2)

好吧,现在知道您想要的是我的解决方案:

在子表单中添加以下过程:

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])

那将满足您的所有需求。

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

答案 1 :(得分:0)

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

假设您的表名为Table1,主键为ID,则可以使用子查询来动态计算该表:

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

答案 2 :(得分:0)

从屏幕快照和说明中,您似乎正在描述一个AutoNumber字段。

这样的字段不能由用户编辑,它将由MS Access自动填充,并且在数据集中具有唯一的整数。这可以用作数据集的主键,并且不受记录排序或删除的影响。

如果您当前的SerialNumber字段已经包含数据,则将无法将该字段的数据类型更改为AutoNumber。因此,您需要先删除现有的SerialNumber字段,然后再添加数据类型为AutoNumber的新字段。