sql - 如何获取 SQL 插入生成的自动编号

标签 sql ms-access autonumber

我正在尝试编写一个函数来检查库存表中的最小值,然后在该值低于最低水平时生成并发送购买请求。

如果满足条件,则会运行如下所示的附加 sql 语句。

DoCmd.RunSQL "INSERT INTO [table1]('field 1', 'field 2')" & _
             "VALUES ('value 1', 'value 2')"

我附加的链接表使用自动编号字段作为主键,我需要引用它的值来链接所请求的各个项目。我不知道如何存储为新记录生成的自动编号。我觉得我错过了一些非常简单的东西,但我的搜索没有带来任何结果。

我希望能够编写第二个语句,如下所示,其中包含自动编号值。

DoCmd.RunSQL "INSERT INTO [table2]( 'ID' , 'field 3')" & _
             "VALUES (" & TempVars!autonumber & ", 'value 3')"

最佳答案

使用DAO.Database对象变量执行INSERT,并在从SELECT @@identity获取值时再次执行这里的关键两者使用相同的数据库变量。如果您尝试从 CurrentDb(而不是 Database 对象变量)获取 SELECT @@identity,您检索到的值将始终为零。

我在 Access 2010 中测试了此代码。

Dim db As DAO.Database
Dim strInsert As String

Set db = CurrentDb
strInsert = "INSERT INTO [table1]([field 1], [field 2])" & vbCrLf & _
    "VALUES ('value 1', 'value 2')"
db.Execute strInsert, dbFailOnError

TempVars.Add "itemNum", db.OpenRecordset("SELECT @@identity")(0).Value
MsgBox "TempVars!itemNum: " & TempVars!itemNum

关于sql - 如何获取 SQL 插入生成的自动编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32662892/

相关文章:

youtube-dl - 如何从 1 以外的数字开始 youtube-dl 自动编号?

asp.net - 在 ASP.NET 中从数据库自动生成 ID

c# - SQL to LINQ in C#(查询多个表和别名)

sql - 如果同时购买了两件商品,请选择 orderId

mysql - 按其他列排序后选择最上面的非重复条目

sql - 按最新日期列汇总表格,仅从两列中选择一个值

mysql - 如何将高级计算集成到数据库领域?

sql - 更改 Access 自动编号值

php - SQL 查询未提供结果

sql - oracle db 列日期默认值不是 sysdate