FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda urgente de SQL Server
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Ayuda urgente de SQL Server
Posted: Thu Jan 21, 2010 11:33 PM
Hola Amigos del foro.

Estoy dando de alta en una tabla de SQL Server.
Para ello utilizo como n贸 una sentencia SQL.
Esta tabla tiene un campo Id autonumerico.

El problema es que una vez dado de alta el registro, necesito obtener el valor del Id que acaba de asignarle a ese nuevo registro.

Y no se como se hace.

Aqu铆 un ejemplo de mi c贸digo.

Code (fw): Select all Collapse
local cStrSql

cStrSql := "INSERT INTO tabla (nombre) VALUES 'Alfredo'"

oCnnDb:BeginTrans()
oCnnDb:Execute( cStrSql )
oCnnDb:CommitTrans()


驴Y ahora como obtengo el Id? :-)
Javier,

FWH 8.04 2008
Posts: 1335
Joined: Fri Jun 13, 2008 11:04 AM
Re: Ayuda urgente de SQL Server
Posted: Fri Jan 22, 2010 04:57 AM
Despu茅s de hacer una inserci贸n, puede llamar a:

Code (fw): Select all Collapse
PRINT IDENT_CURRENT('table')


Esto le dar谩 el valor de identidad m谩s reciente de 芦mesa禄 -, independientemente de si lo ha creado o no (esto anula la limitaci贸n de conexi贸n de @ @ IDENTITY - que puede ser 煤til).

Otra forma es utilizar un solo procedimiento almacenado que se encarga de los permisos INSERT y la recuperaci贸n de identidades con @ @ IDENTITY.

Aqu铆 est谩 el c贸digo de ejemplo para el procedimiento almacenado:

Code (fw): Select all Collapse
CREATE PROCEDURE myProc 
    @param1 INT 
AS 
BEGIN 
    SET NOCOUNT ON 
    INSERT INTO someTable 
    ( 
        intColumn 
    ) 
    VALUES 
    ( 
        @param1 
    ) 
    SELECT NEWID = SCOPE_IDENTITY() 
END

Y uno dir铆a que es como sigue:


Code (fw): Select all Collapse
nTestValue:= 5 
rs: = conn.execute("EXEC myProc @param1=" +str(nTestValue,2) )
MsgInfo("New ID was " + rs(0) )


Anser
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Ayuda urgente de SQL Server
Posted: Fri Jan 22, 2010 12:50 PM
Gracias por su ayuda.

De todos modos ya lo pude resolver usando un RecordSet en lugar el la cadena de conexi贸n.

Dejo el c贸digo por si le sirviera a alguien:
Code (fw): Select all Collapse
   oRs:AddNew()
   ----- asignamos valores a campos

   oRs:Update()
   val := oRs:Fields( "Id" ):Value
Javier,

FWH 8.04 2008

Continue the discussion