gpt4 book ai didi

ms-access - 更新后在主键中留下空白

转载 作者:行者123 更新时间:2023-12-05 01:36:04 24 4
gpt4 key购买 nike

我正在开发一个 Access 数据库,其中包含一些仅用于数据输入的表单。问题是,当我打开这些表单中的任何一个时,access 会在基础表中创建一个新条目,包括递增基础表的自动编号主键,并且自动编号保持递增,即使用户选择不在中创建记录数据库。这意味着由于用户打开和关闭表单而不提交更改的所有时间,实际表中的自动编号序列存在间隙。

我在 beforeupdate 方法中使用以下代码来允许用户丢弃不良数据:

Private Sub Form_BeforeUpdate(Cancel As Integer)
'Provide the user with the option to save/undo
'changes made to the record in the form
If MsgBox("Data has been entered into this form." _
& vbCrLf & vbCrLf & "Do you want to save this data?" _
, vbYesNo, "Changes Made...") = vbYes Then
DoCmd.Save
Else
DoCmd.RunCommand acCmdUndo
End If
End Sub

我曾想过使用 beforeinsert 事件,但在使用 beforeinsert 时打开表单时遇到问题。

有人可以告诉我如何进行设置,以便不会在自动编号值的序列中产生这些间隙吗?该数据库将由大约 10 个并发用户使用。

最佳答案

您不应该为自动编号字段的值赋予任何意义。 Autonumbers 允许您为每一行定义唯一值,但这样做不能保证它们是连续的。我强烈建议您只使用自动编号字段来标识唯一记录,而不是作为某种计数器或人类可读的值。

现在,撇开这些,如果您需要每条记录真正具有顺序值,那么您需要做的是

  1. 创建一个只有一行、一列的单独表格,其中包含序列中的下一个值。
  2. 每当从数据输入表单中保存一条记录时,您都会专门锁定该计数器表,以防止任何其他用户读取或写入它。
  3. 从计数器表中检索当前值并将其用于您的新数据输入记录。
  4. 更新计数器表中的值以递增到下一个值。

Microsoft 提供了一个函数可以很容易地独占锁定一个表:DAOOpenTableExclusive(),可以找到here .

您可以使用找到的代码 here创建一个计数器表。

关于ms-access - 更新后在主键中留下空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com