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