Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2017
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Obtener campo autoinc con Firedac

Hola, como comente en otros post, estoy migrando una bd a FireBird.

He creado algunas tablas con algun campo autoinc con su correspondiente trigger.

Mi consulta es luego de terminar el insert en una tabla, necesito obtener cual es el numero "autogenerado" para insertar en otra tabla como referencia.

He leido algunos post donde indican que el componente firedac trae alguna propiedad para ello pero no he podido acceder a ella.

Es esta la mejor solucion ?

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 09-10-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No he usado los componentes, pero revisa si el método GetLastAutoGenValue del la clase TADCustomConnection te sirve.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 10-10-2017
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Gracias ecfisa, pruebo y comento.

Saludos
Responder Con Cita
  #4  
Antiguo 10-10-2017
botones67 botones67 is offline
Miembro
 
Registrado: may 2003
Posts: 104
Poder: 0
botones67 cantidad desconocida en este momento
Hola compañeros.
Supondo que tendrás un tigger before insert.
Yo además tengo un procedimiento almacenado que pasa a una variable antes del Post o de ApplyUpdates en nuevo valor generado por el generador al lado del servidor luego con ese
valor sería fácil pasarlo a otra tabla.
// lado del ejecutable antes de post o ApplyUpdates
Código SQL [-]
datos.modulodb.proce.ExecProc;
      datos.modulodb.Cliente_Maestro.FieldByName('id').AsInteger := datos.modulodb.PROCE.ParamByName('CODD3').AsInteger;
// lado del servidor procedimiento almacanedo
Código SQL [-]
CREATE PROCEDURE NUEVO
      RETURNS( CODD3 INTEGER)
      AS
        BEGIN
          CODD3=GEN_ID(MAESTRO_ID_GEN,1);
          SUSPEND;
       END


Un saludo y suerte.
Responder Con Cita
  #5  
Antiguo 13-03-2018
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 412
Poder: 14
bulc Va por buen camino
Sí, usa la función GetLastAutoGenValue con FDConnection

Te indicará el número del Generador en la actualidad, como te han dicho ya.
Código Delphi [-]
Var nGen : Integer;
Begin
  nGen :=  DataModuleX.FDConnection1.GetLastAutoGenValue('Gen_aTable')
Me pregunto si existe una función parecida para el caso de haber definido un campo IDentificador con Firebird 3.0 mediante:
ID Integer Generated by Default as Identity Primary Key;
Saludos,
bulc
Responder Con Cita
  #6  
Antiguo 14-03-2019
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 19
amadis Va por buen camino
¿alguien ha conseguido obtener el ultimo ID desde in INSERT/SELECT??

Cita:
Empezado por bulc Ver Mensaje
Te indicará el número del Generador en la actualidad, como te han dicho ya.
Código Delphi [-]
Var nGen : Integer;
Begin
  nGen :=  DataModuleX.FDConnection1.GetLastAutoGenValue('Gen_aTable')
Me pregunto si existe una función parecida para el caso de haber definido un campo IDentificador con Firebird 3.0 mediante:
ID Integer Generated by Default as Identity Primary Key;
Saludos,
bulc
Responder Con Cita
  #7  
Antiguo 15-03-2019
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 19
amadis Va por buen camino
Bluc

¿como hiciste para obtener el campo Identity?

Ya que por lo visto esa función GetLastAutoGenValue sólo es para Generators, o bien a mi no me anda.

Si la ejecuto me da error

Código Delphi [-]
[FireDAC][Phys][FB]invalid request BLR at offset 55
generator TABLA is not defined

Cita:
Empezado por bulc Ver Mensaje
Te indicará el número del Generador en la actualidad, como te han dicho ya.
Código Delphi [-]
Var nGen : Integer;
Begin
  nGen :=  DataModuleX.FDConnection1.GetLastAutoGenValue('Gen_aTable')
Me pregunto si existe una función parecida para el caso de haber definido un campo IDentificador con Firebird 3.0 mediante:
ID Integer Generated by Default as Identity Primary Key;
Saludos,
bulc
Responder Con Cita
  #8  
Antiguo 13-03-2018
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 412
Poder: 14
bulc Va por buen camino
Cita:
Empezado por botones67 Ver Mensaje
Hola compañeros.
Supondo que tendrás un tigger before insert.
Yo además tengo un procedimiento almacenado que pasa a una variable antes del Post o de ApplyUpdates en nuevo valor generado por el generador al lado del servidor luego con ese
valor sería fácil pasarlo a otra tabla.
// lado del ejecutable antes de post o ApplyUpdates
Código SQL [-]
datos.modulodb.proce.ExecProc;
      datos.modulodb.Cliente_Maestro.FieldByName('id').AsInteger := datos.modulodb.PROCE.ParamByName('CODD3').AsInteger;
// lado del servidor procedimiento almacanedo
Código SQL [-]
CREATE PROCEDURE NUEVO
      RETURNS( CODD3 INTEGER)
      AS
        BEGIN
          CODD3=GEN_ID(MAESTRO_ID_GEN,1);
          SUSPEND;
       END


Un saludo y suerte.
No entiendo cómo se ejecuta el SP 'NUEVO' en las dos primeras líneas. ¿Puedes ampliarlo, por favor?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
FireDAC - Problema con relación Maestro/detalle y columna AutoInc jarlos Conexión con bases de datos 4 01-06-2016 06:32:27
Asignar el valor de un campo AutoInc definido en un tirgger_BI KAYO Firebird e Interbase 1 23-09-2008 18:47:05
campo autoinc teclilla Tablas planas 3 14-06-2008 03:10:52
obtener el valor de un campo (Tquery) Yoli Conexión con bases de datos 5 08-04-2005 23:07:05
Recuperar autoinc. después de Insert to aig MS SQL Server 2 22-09-2004 11:41:28


La franja horaria es GMT +2. Ahora son las 18:43:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi