[Lazarus-es] obtener id recién grabado
Ismael L. Donis Garcia
ismael en citricos.co.cu
Mie Dic 19 18:53:20 CET 2012
Exacto debes usar la función returning de firebird.
Te pongo de ejemplo SP textual que tengo en una BD:
SET TERM ^ ;
CREATE PROCEDURE P_ENC_SAL (
INT_IDAC INT_NNULL,
INT_IDA INT_NNULL,
INT_NUM INT_NNULL,
DAT_FECHA DAT_NNULL,
VCH_FACTURA VCH_11_NULL,
VCH_RECIB VCH_30_NULL,
VCH_TRANSP VCH_30_NULL,
VCH_CLAVE VCH_2_NNULL,
INT_USU INT_NNULL )
RETURNS (
INT_SAL INT_NULL,
INT_IDS INT_NULL )
AS
BEGIN
/* Procedimiento para registrar el encabezado de los vales de salida */
insert into vteano (idac, ida, num, fecha, factura, recib, transp, clave, iduv)
values (:int_idac, :int_ida, :int_num, :dat_fecha, :vch_factura, :vch_recib, :vch_transp, :vch_clave, :int_usu) returning idea into :int_ids;
int_sal = row_count;
suspend;
END^
SET TERM ; ^
El campo llave de la tabla se llama idea
Saludos
=========
|| ISMAEL ||
=========
----- Original Message -----
From: Martin Gomez
To: Spanish version of Lazarus List
Sent: Wednesday, December 19, 2012 9:18 AM
Subject: Re: [Lazarus-es] obtener id recién grabado
para cada base de datos hay una función (distinta en cada caso) que te devuelve el valor del último id automático utilizado.
aparentemente, en firebird la forma mas sencilla es ejecutar el INSERT con un RETURNING al final, en vez de Query.ExecSQL utilizas Query.Open y ya tenes el resultado.
http://www.firebirdfaq.org/faq243/
2012/12/19 Paola Bruccoleri <pbruccoleri en adinet.com.uy>
Hola todos..
quizás el asunto no es muy claro, trataré de explicar lo que quiero lograr.
Tengo un form donde debo capturar unos datos que se grabarán en una tabla1 y a su vez capturar registros complementarios a esos datos (1 o más) que serán grabados en una tabla2.
A la hora de grabar, tabla1 obtendrá su id en forma automática, pero debo usar ese mismo id para grabar los registros complementarios a ese en tabla2.
Uso componentes zeos y firebird.
Puedo usar un store procedure, pero no se si se le puede pasar por ej un array como parámetro (que serían los registros que irán a tabla2)
Para que tengan una idea, lo asociaré a la idea clásica de una factura y sus detalles, donde el id de factura será el mismo obviamente en el maestro y en el detalle.
Agradezco cq idea
muchas gracias!
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
--
Try not to become a man of success but rather to become a man of value. Albert Einstein
------------------------------------------------------------------------------
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20121219/c036e443/attachment-0002.html>
More information about the Lazarus-es
mailing list