如何在 MS Access 表单中添加序列号字段
How to Add Serial Number Field in MS Access Form
我在 MS Access 2007 中有一个 Invoice
表单。此表单有一个名为 InvoiceLines
的子表单,其中包含字段 SerialNumber
、ItemNumber
、ItemName
、 ItemQty
等。我想在此表格中添加序列号。我添加了 =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])
。
这将满足您的所有需求。
注意:如果您删除了子表单中的记录,则必须刷新子表单以更新序列号。
我在 MS Access 2007 中有一个 Invoice
表单。此表单有一个名为 InvoiceLines
的子表单,其中包含字段 SerialNumber
、ItemNumber
、ItemName
、 ItemQty
等。我想在此表格中添加序列号。我添加了 =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])
。
这将满足您的所有需求。
注意:如果您删除了子表单中的记录,则必须刷新子表单以更新序列号。