** rutina getidentity

Lparameters cCmd
** devuelve el último identity generado después de grabar con sql pass through

Local lOK,nPK,nResults,lBatchMode

lOK = sqlexec(thisform.nHandle,cCmd) && envias el comando de insercion, ej: 'insert into clientes(cuenta,empresa) values(1234,'JAIMITO SA')

if lOK = .t.
    nPK      = 0
    nResults = 0
    cCmd     = [select @@IDENTITY as pk ]

    lBatchMode = SQLGetProp(thisform.nHandle,"BatchMode" )

    SQLSetProp(thisform.nHandle,"BatchMode" ,.f.)

SQLExec(thisform.nHandle,cCmd,'curPK') && recibis el valor del identity generado en el cursor curPK

    Do while nResults <> 2
       nResults = SQLMoreResults(thisform.nHandle)
    enddo


    SQLSetProp(this.nHandle,"BatchMode" ,lBatchMode)

    nPK = curPK.pk
    Use in Select('curPK')
    return nPK

else

     SQLRollback(thisform.nHandle)
SQLSetProp(thisform.nHandle,'Transactions',1 ) && transacciones automaticas

endif

Rafael Copquin


El 05/12/2012 11:55 a.m., Alejandro Paciotti Iacchelli escribió:
Estimados colisteros:

Desde un procedimiento ejecuto un INSERT en una tabla de SQL SERVER que tiene un campo ID que se autogenera.

¿Alguien sabe como puedo acceder a ese valor una vez que se haya realizado correctamente el INSERT?

Gracias de antemano!

--
[email protected] <mailto:[email protected]>

Responder a