Excel VBA 和 ADODB:从 VBA 检索插入 SQL Server 的行的自动标识

use*_*094 3 sql-server excel vba ado

在 Excel 的 VBA 模块中。使用 ADODB.Connection 和此连接字符串:

"Provider=SQLOLEDB;Data Source=MARS;Initial Catalog=automation;Trusted_connection=yes;"
Run Code Online (Sandbox Code Playgroud)

我想要:

  1. INSERT INTO test (data) VALUES ('Something')
  2. 检索新插入行的自动递增标识 (test.data_id)。

use*_*094 5

Dim identity as integer
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

cn.ConnectionString = "whatever..."
cn.Open
cn.Execute ("INSERT INTO test(data) VALUES ('hello world')")
rs.Open "SELECT @@identity AS NewID", cn
identity = rs.Fields("NewID") 
MsgBox (identity)
Run Code Online (Sandbox Code Playgroud)

  • 如果您有一个连接变量,则可以将其简化为`identity = cn.Execute("SELECT @@Identity")(0)`,而无需创建记录集。 (2认同)