Ver Mensaje Individual
  #5  
Antiguo 08-06-2006
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Reputación: 22
Paoti Va por buen camino
Generadores, trigger, obtener valor

Hola compañero.



Si se genera el autoincremento, más no se refleja en delphi, hasta que no hagas un commit; abres y cirres el datset.


Y eso es por la forma de que se genera el autoincremento en trigger,


lo que puedes hacer es:


crearte un procedimiento almacenado que obtenga el generador usado inmediatamente despues de haber hecho el post.


o englobar en un solo procedimiento em insert de la tbla y la obtención del ID autoincrementado.


es decir:

Código SQL [-]
CREATE PROCEDURE PR_OBTENER_ULT_ID_COMPRA 
RETURNS (
    ID_COMPRA INTEGER)
AS
/* Se asigna una variable que se llama ID_compra
   que leera el valor actual del generador
   de la última compra realizada
   Para llamar este generador desde delphi
   se debe de usar esta instrucción:
   SELECT * FROM PR_OBTENER_ULT_ID_COMPRA

   SUSPEND, SU USA PARA QUE EL PROCEDURE
   DEVUELVA EL VALOR DE SALIDA */
BEGIN
  /* Procedure body */
  ID_COMPRA = GEN_ID(GEN_COMPRAS_ID_COMPRAS, 0);
  SUSPEND;
END

con esto puedes obtener el id asignado...



A TODOS LOS COMPAÑEROS, QUE USAN FIREBIRD O INTERBASE. QUE HACEN ANTE ESTAS SITUACIONES.

UN CASO PRACTICO ES CUANDO TIENELAS TABLAS EL MAESTRO Y EL DATALLE , Y EN EL MAESTRO, UNA VEZ QUE DAS DE ALTA NO TIENES SU NUEVO ID, PARA PODER INSERTAR EL DETALLE CON ESE ID DEL PADRE.


espero haberme explicado.


Saludos desde Guadalajara
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita