Sql 带有Insert和Select的ADODB命令

Sql 带有Insert和Select的ADODB命令,sql,sql-server,vba,adodb,Sql,Sql Server,Vba,Adodb,我正在尝试使用VBA中的ADODB.command发送命令。我知道连接和命令可以正常工作,因为它们在代码中的几个地方都有使用。但是,我在使用双插入/选择时遇到问题。我一直得到一个字段数为0的记录集。我更熟悉使用C SqlCommand对象,它允许这种堆叠命令。有没有一种方法可以在VBA中使用ADODB实现这一点?代码如下: 注意:reader2是一个ADODB.Recordset。使用TSQL连接到Microsoft SQL Server comm2.CommandText =

我正在尝试使用VBA中的ADODB.command发送命令。我知道连接和命令可以正常工作,因为它们在代码中的几个地方都有使用。但是,我在使用双插入/选择时遇到问题。我一直得到一个字段数为0的记录集。我更熟悉使用C SqlCommand对象,它允许这种堆叠命令。有没有一种方法可以在VBA中使用ADODB实现这一点?代码如下:

注意:reader2是一个ADODB.Recordset。使用TSQL连接到Microsoft SQL Server

        comm2.CommandText = "INSERT INTO tblTest (F1,F2,F3,F4,F5) VALUES(?,?,'Running',?,0); SELECT SCOPE_IDENTITY()"
        comm2.Parameters.Append comm2.CreateParameter("@f1", adVarChar, adParamInput, Len(f1) + 1, f1)
        comm2.Parameters.Append comm2.CreateParameter("@f2", adVarChar, adParamInput, 1, f2)
        comm2.Parameters.Append comm2.CreateParameter("@f3", adDate, adParamInput, 0, Now)
        Set reader2 = comm2.Execute
        scopeId = reader2.Fields(0)
        reader2.Close
        comm2.Parameters.Delete (0)
        comm2.Parameters.Delete (0)
        comm2.Parameters.Delete (0)
我通过使用

Set reader2 = reader2.NextRecordset

在命令执行之后。批处理命令创建一个记录集列表,其中第一个是属于insert的记录集,而不是select的记录集。

@mehow reader2是ADODB.recordset。我已经在上面添加了。如果您访问的是Access数据库,这将不起作用,因为Access不支持批处理命令。我相当肯定它也不支持SCOPE\u标识。您需要使用@标识。在执行命令之前,添加Comm2.CommandType=adCmdText。然后在同一连接上分别运行这两个命令。插入后,请更改CommandText并运行标识选择代码。@Fred我正在使用TSQL而不是Access连接到Microsoft SQL Server。我尝试拆分这两个命令,但SELECT SCOPE_IDENTITY在与insert分开运行时返回NULL。