Article ID: 177736
Article Last Modified on 7/1/2004
Create Table IColTest
(Id_Col int Identity, F2 VarChar(30) Null)
Create Unique Index IIndex on IColTest(Id_Col)
Dim wk As Workspace
Dim cn As Connection
Private Sub Command1_Click()
'This procedure creates a stored procedure on a remote
'data source, creates a querydef to call the stored
'procedure, supplies values for the stored procedure's input,
'parameters and returns the value of an Identity column.
Dim qd As QueryDef
Dim strSQL As String
On Error Resume Next
' If stored procedure MyInsert exists on the server, drop it
' and recreate.
strSQL = "DROP PROCEDURE MyInsert;"
cn.Execute strSQL
On Error GoTo 0
' Create stored procedure on the server.
strSQL = "Create Procedure MyInsert @FieldVal Varchar(30), _
@id Int OUTPUT AS "
strSQL = strSQL & "Insert Into IColTest (F2) Values(@FieldVal) "
strSQL = strSQL & "Select @id = @@Identity"
cn.Execute strSQL
Set qd = cn.CreateQueryDef("qry", "{ call MyInsert(?, ?) }")
qd.Parameters(0).Direction = dbParamInput
qd.Parameters(1).Direction = dbParamOutput
qd.Parameters(0).Value = "RainBow"
qd.Execute
Debug.Print qd.Parameters(1)
qd.Close
End Sub
Private Sub Command2_Click()
Dim rs As Recordset
Set rs = cn.OpenRecordset("SET NOCOUNT ON INSERT INTO _
IColTest(F2) VALUES('Balloon')SELECT @@IDENTITY SET NOCOUNT OFF")
Debug.Print rs(0)
rs.Close
End Sub
Private Sub Form_Load()
Dim strConnect As String
Set wk = DBEngine.CreateWorkspace("ODBCDirect", "", "", dbUseODBC)
strConnect = "ODBC;SERVER=MyServer;DRIVER={SQLServer}; _
DATABASE=pubs;UID=<username>;PWD=<strong password>;"
Set cn = wk.OpenConnection("", dbDriverNoPrompt, False, strConnect)
End Sub
Private Sub Form_Unload(Cancel As Integer)
cn.Close
wk.Close
End Sub
170147 : How To Retrieve Identity Column After Insert Using RDO
Keywords: kbhowto KB177736