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