Używając „SELECT SCOPE_IDENTITY ()” w ADODB Recordset

Korzystając ze skryptu VBA w programie Excel, próbuję wstawić nowy wiersz do tabeli, a następnie odzyskać wartość tożsamości tego wiersza. Jeśli biegnę:

INSERT INTO DataSheet(databaseUserID, currentTimestamp)
VALUES (1, CURRENT_TIMESTAMP);
SELECT SCOPE_IDENTITY()

w Management Studio wiersz jest wstawiany i daje mi zwróconą wartość tożsamości zgodnie z oczekiwaniami. Jednakże, gdy uruchomię dokładnie to samo zapytanie poprzez zestaw rekordów ADODB w VBA, mam problem. Wiersz jest rzeczywiście wstawiony, ale nie mogę uzyskać dostępu do wartości tożsamości. Zestaw rekordów zawiera 0 pól i również został zamknięty. Próbowałem z i bez średnika, a także próbowałem uruchomić zapytanie jako pojedynczą transakcję. Ta sama umowa, bez kości. Masz jakiś pomysł, co się dzieje?

Oto mój 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)

A okno komunikatu nie wyświetla się, ponieważrs.Fields(0).Value zwraca NULL. Dodałem zegarek do rs i, jak powiedziałem, pokazuje 0 pól po zapytaniu i również wydaje się być zamknięty (stan = 0).

questionAnswers(4)

yourAnswerToTheQuestion