使用Excel中的VBA脚本,我试图插入新行到一个表,然后取回该行的标识值。 如果我运行:
INSERT INTO DataSheet(databaseUserID, currentTimestamp)
VALUES (1, CURRENT_TIMESTAMP);
SELECT SCOPE_IDENTITY()
在Management Studio中,该行插入,这让我按预期的方式返回标识值。 然而,当我通过VBA一个ADODB记录运行完全相同的查询,我遇到麻烦了。 该行确实插入,但我不能访问的标识值。 该记录列出0字段和实际上已被关闭为好。 我试着和没有分号,而且我也尝试运行查询作为单个事务也是如此。 同样的协议,没有骰子。 任何想法是怎么回事?
这里是我的VBA:
Dim rs As ADODB.Recordset
Dim cn As Connection
Dim SQLStr As String
Dim serverName As String
Dim databaseName As String
serverName = "MSSQLServer"
databaseName = "QA"
cxnStr = "Driver={SQL Server};Server=" & serverName & ";Database=" & databaseName & ";"
SQLStr = "INSERT INTO DataSheet(databaseUserID, currentTimestamp)
VALUES (1, CURRENT_TIMESTAMP); SELECT SCOPE_IDENTITY()"
Set cn = New ADODB.Connection
cn.Open cxnStr
Set rs = New ADODB.Recordset
rs.Open SQLStr, cn, adOpenKeyset, adLockOptimistic
MsgBox (rs.Fields(0).Value)
以及消息框无法显示,因为rs.Fields(0).Value
返回NULL。 我添加了一个手表RS,和,就像我说,示出了该查询后0字段和似乎也被关闭(状态= 0)。