主键值更改后,自动编号列重启值是否为1?

时间:2016-07-11 13:58:16

标签: ms-access

我有2个表,称之为PO和PO_LI。 PO中有一个名为PO#的列,它是主键,与PO_LI中的PO#列有1对多的关系(1在PO中)。在PO_LI中,其他列是Line#,Description和LineAmount。

如何为每个新的PO#重置数字1?
这可以在使用自动编号时完成吗? 这可以在ms-access gui中完成还是需要VBA代码?

1 个答案:

答案 0 :(得分:1)

您无法手动编辑自动编号字段或更改其起始值。您最好的选择是使用VBA获取最大行数并增加它,如果您使用新的PO,则从1开始。您可以将此VBA放入PO字段的AfterUpdate事件中。 / p>

你可以这样做:

Dim db as Database
Dim rec as Recordset
Dim rec2 as Recordset
Dim MyVal as Integer

Set db = CurrentDB
Set rec = db.OpenRecordset("Select LineNum from MyTable where PO = '" & Me.txtPO & "' group by PO")

'If there are no records returned, start at 1.  Otherwise, increment.
If rec.EOF = true then
  MyVal = 1
else
  Set rec = db.OpenRecordset("Select Max(LineNum) from MyTable where PO = '" & Me.txtPO & "'")
  MyVal = rec(0) + 1
endif

MyVal现在是您要写入LineNum的号码。当然,您需要更改变量,这些变量实际上是您表单和表格中的变量,但您应该明白这一点。