Gracias Rafael y a todos.
Pongo acá como le encontré la vuelta gracias a los datos aportados para que
quede en el historial.
El SP en SQLSERVER quedó así:
*ALTER PROCEDURE [dbo].[Prueba2] *
*AS*
*BEGIN*
* -- SET NOCOUNT ON added to prevent extra result sets from*
* -- interfering with SELECT statements.*
* SET NOCOUNT ON;*
*
*
* -- Insert statements for procedure here*
* INSERT INTO Prueba (Descripcion) VALUES ('Prueba')*
* RETURN @@IDENTITY*
*END*
Y la llamada desde FOX quedó asi:
*TEXT TO cInstruccionSQL TEXTMERGE NOSHOW PRETEXT 2*
* DECLARE @RC int*
*
*
* -- TODO: Set parameter values here.*
*
*
* EXECUTE @RC = [SACC].[dbo].[Prueba2] *
* SELECT @RC*
*ENDTEXT*
***
*nResultado = SQLEXEC(oAplicacion.Conexion, cInstruccionSQL, 'R')*
***
*IF nResultado < 0*
* MESSAGEBOX(MESSAGE())*
*ELSE*
* MESSAGEBOX("El campo IDENTITY grabado es: " +
TRANSFORM(R.CampoIdentidad))*
*ENDIF *
Gracias a Todos!
El 5 de diciembre de 2012 13:58, Rafael Copquin
<[email protected]>escribió:
> ** 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]
>
>
>
--
[email protected]