【问题标题】:Appending data to an indexed table将数据附加到索引表
【发布时间】:2018-12-14 00:35:18
【问题描述】:

我正在尝试将记录附加到具有由 ID 列索引的数据的表中。我希望附加数据继续索引并将下一个数字附加到第一个附加记录,依此类推。但是,该 ID 列不是自动编号列——第一个数字必须是 5001,因此它的当前数据类型是“数字”。该表中已有的数据是通过带有此 VBA 的表单输入的,以格式化 ID 列:

    If Nz(Me.ID, "") = "" Then
    NewID = Int(DMax("ID", "tComplianceAll") + 1)
Else
    NewID = Me.ID
End If

我目前有一个附加查询,试图将新数据附加到具有该 ID 列的此 SQL 的表中:Int(DMax("ID","tComplianceAll")+1) AS Expr1

但是,这仅适用于第一条记录。由于密钥违规,其​​余部分不会被附加,因为它试图为所有附加记录分配相同的 ID 号。有没有办法更改该 SQL 以便正确索引新附加的数据?

【问题讨论】:

  • 您可以“播种”自动编号字段的起始值,这是迄今为止解决问题最简单的方法,使用自动编号。只要您当前的数据可靠,我相信您仍然可以更改数据类型。
  • 如果您不想定义自动编号列,另一种选择是编写一些 VBA 代码来附加数据。

标签: ms-access indexing vba append autonumber


【解决方案1】:

您当然可以在这里使用标准的自动编号 ID 值!

  1. 编辑表tComplianceAll并将ID列类型更改为AutoNumber
  2. 然后,使用此 SQL 设置下一个值:

    ALTER TABLE tComplianceAll ALTER COLUMN ID AUTOINCREMENT(5001,1)
    

    实际上,您可以将5001 更改为(DMax("ID", "tComplianceAll") + 1) 返回的最新值

应该这样做,前提是tComplianceAll 与使用ID 字段的其他外部表没有任何关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 2015-05-10
    • 1970-01-01
    • 2016-08-29
    • 2011-12-24
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多