我面臨的一個問題是,我需要根據現有數據計算一些數據,然後插入該數據,最後使用VBA將其返回到Excel文件。MS SQL在INSERT後獲取值
我已經成功已經能夠創建一個存儲過程,插入後返回值表:
[...]
INSERT INTO [ExcelRGA] (RM_prefix, RM_suffix, editing, createdBy, editedBy) values (@RM_prefix, @RM_suffix, 1, @user, @user);
DECLARE @tab table (RM varchar(20))
INSERT @tab SELECT (@RM_prefix +'-' + right('00' + @RM_suffix, 3)) as 'RM';
SELECT * FROM @tab
END
和這個作品!但是,我無法得到它正在使用VBA
Set oRS = New ADODB.Recordset
Set cmd = New ADODB.Command
Dim objRec As Object
cmd.ActiveConnection = oCon
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "dbo.newRM"
cmd.Parameters.Refresh
cmd.Parameters("@user").Value = "john"
Set oRS = cmd.Execute()
返回值,但我嘗試做一些像
while not oRS.eof
....
wend
得到一條錯誤消息指出該記錄是關閉的,我不能做我的事情。
我想要做的就是保護我已計算的信息(RM_prefix和RM_suffix),將它們插入我的表中並將它們返回給我的Excel文件。
如果有一種方法可以在不使用存儲過程(如函數)的情況下做到這一點,那也將非常棒!
請記住,這是一個多用戶環境,因此在Excel中生成值並將它們發送到SQL服務器以進行插入並不能100%保證所述數據的唯一性。
謝謝大家的寶貴幫助和投入!
彼得
在你的代碼中,'oRS'是你給Recordset的名字,但是在'while'代碼中,你引用'rs'。這是一個錯誤嗎? – SchmitzIT
對不起,是的。它實際上是oRS – pbocsak
如果使用臨時表而不是表變量會發生什麼? – SchmitzIT