使用Excel中的VBA腳本,我試圖插入新行到一個表,然後取回該行的標識值。如果我運行:使用「SELECT()SCOPE_IDENTITY」在ADODB記錄
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)。
漂亮!完美的作品,謝謝! – JoeCool 2009-07-29 17:27:18