Ok, the code that you posted seems to have errors in it, So first lets assume that you didn't just mis-type in the post...
sSq = "DECLARE @iIntId INT " & _
"SET @iIntId = null " & _
"exec GetID 1,@iIntId OUTPUT " & _
"SELECT @iIntId " & _
rs.Open sSQl, gDbConn, adOpenDynamic, adLockOptimistic
if Not rs.Eof then
MyId = rs("iIntId")
This looks like you are trying to add your rs.Open to the SQL string.
If your code is right, and this is just a typo, then I am wondering if you are getting enbedded recordsets back. The first recordset being the empty results from the exec GetID, and the ".NextRecordset" holding your id.
I didn't test this, but it is a thought.
John R Lick