首页 > 解决方案 > 从另一个查询或字段更改表自动增量起始编号标准

问题描述

我有一个存储我们所有分销合作伙伴销售额的数据库。每周我都会收到更新的销售数据,并将其加载到我称之为 tblImport 的文件中。然后,我运行了一些查询,将新的销售行解析为 tblUpdate 和 tblNewAccounts。我正在努力实现的是将 NewAccounts 表中的 Bill To ID(BT_ID) 字段自动化。我知道如何从主客户表中找到最高的 BT_ID。我想不通的是如何让 tblNewAccounts 开始自动对主客户表中最大 BT_ID +1 的 BT_ID 字段进行编号。

我想出了 Alter Table,这是我在 SQL Query 中使用的代码,但我需要值 128071 实际上是 1 加上主客户表中的 MAX BT_ID。

ALTER TABLE [tblUpdate2_NewAcct]
ALTER COLUMN [BT_ID] AUTOINCREMENT(128071,1)

这是我尝试过的其他方法,但我不断收到错误。

SELECT Max(tblALX_BillTo.BT_ID) AS MaxOfBT_ID
FROM tblALX_BillTo;
ALTER TABLE [tblUpdate2_NewAcct] ALTER COLUMN [BT_ID] AUTOINCREMENT([MaxOfBT_ID],1);

我也尝试在 VBA 中这样做,但它也没有奏效。我假设这一切都与 AutoIncrement 开始的标准字段有关。

标签: sqlvbams-access

解决方案


使用相当简单的 VBA 代码,您可以使用DMax获取最大当前BT_ID值加 1。然后将该值写入您的ALTER TABLE语句,并执行它。

Dim strDDL As String
Dim lngNewSeed as Long
lngNewSeed = DMax("BT_ID", "tblALX_BillTo") + 1
strDDL = "ALTER TABLE tblUpdate2_NewAcct" & vbCrLF & _
    "ALTER COLUMN BT_ID AUTOINCREMENT(" & lngNewSeed & ", 1)"
CurrentProject.Connection.Execute strDDL

推荐阅读