Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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 03-03-2018
Avatar de bulc
bulc bulc is offline
Miembro
NULL
 
Registrado: jun 2010
Posts: 371
Poder: 9
bulc Va por buen camino
Actualizar el Generador de Firebird

Uso el Generador y Trigger de Firebird 3.0 para añadir número a los nuevos registros. Y funciona sin problemas, pero al visionar el nuevo registro en un TDBGrid aparece un cero (0) que es lo que uso para disparar el Trigger.
No uso un NULL porque me da error al ser un campo con dato obligado.
¿Qué método puedo usar en el FDBQuery o FDConnection ( o el que sea ) para actualizar el dato? Serviría el Refresh? Porque este último me daba errores y he dejado de usarlo.
Gracias,
bulc
Responder Con Cita
  #2  
Antiguo 03-03-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 28.693
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues si no vemos cómo lo haces, poco podemos ayudar.
Responder Con Cita
  #3  
Antiguo 04-03-2018
Avatar de bulc
bulc bulc is offline
Miembro
NULL
 
Registrado: jun 2010
Posts: 371
Poder: 9
bulc Va por buen camino
Con más explicación de código

Así, a bote pronto algo como esto:
Código Delphi [-]
Q1.Close;
Q1.SQLText:='Insert into TableX values (:P1, :P2, :P3)';
Q1.ParamByName(('P1').Value:= '0';  // Activa el Trigger Firebird
Q1.ParamByName(('P2').AsString:=Edit2.Text;
Q1.ParamByName(('P1').AsDate:=StrToDate(MaskEdit1.Text);
Q1.ExecSQL;
Q1.SQLText:='Commit';
ShowMessage('Inserción correcta');
Y luego en el Trigger, algo parecido a
Código SQL [-]
Set term ^;
Create trigger BI_Mine for TableX
Active Before Insert position 0
as begin
 if (New.Num = 0) then new.Num = GEN_ID( GEN_MINE, -1); 
end;
commit;
Set term ; ^
Como decía todo funciona bien, pero al salir de la inserción (en Delph1), el DBGrid muestra un cero, no el número correcto real.
Cuando hago otra pasada SQL con el FDQuery, entonces sí que se muestra en nuevo número de registro correcto.
Código Delphi [-]
FDQuery1.Active :=False;
FDQuery1.SQL.Clear;
FDQuery1.Add('select * from Mine....');
FDQuery1.Active :=True;
Responder Con Cita
  #4  
Antiguo 04-03-2018
WHILENOTEOF WHILENOTEOF is offline
Miembro
NULL
 
Registrado: mar 2008
Posts: 166
Poder: 11
WHILENOTEOF Va camino a la fama
Necesitas configurar las propiedades AutoincFields (nombre del campo que se actualiza con el generador) y GeneratorName dentro de UpdateOptions del componente TFDQuery.
Responder Con Cita
  #5  
Antiguo 04-03-2018
Avatar de bulc
bulc bulc is offline
Miembro
NULL
 
Registrado: jun 2010
Posts: 371
Poder: 9
bulc Va por buen camino
Modestamente creo que no va por ahi la cosa

Es decir, se trata de visionar el resultado correctamente no de hacer uso del AutoIncrement en FDQuery. Pero probaré. Ya de diré del resultado.
Gracias,
bulc
Responder Con Cita
  #6  
Antiguo 04-03-2018
WHILENOTEOF WHILENOTEOF is offline
Miembro
NULL
 
Registrado: mar 2008
Posts: 166
Poder: 11
WHILENOTEOF Va camino a la fama
Modestamente puede que tengas razón

, he contestado de primeras, y es posible que tengas razón, tendría que probarlo. la idea es que hay que decirle de alguna forma a Firedac qué campo tiene que recuperar su nuevo valor, una vez que haces la inserción, en Fibplus lo tenías que configurar explícitamente para que recuperarlo. Es normal que si no configuras nada el no actualice el valor del generador, no sabe nada el componente sobre que ese campo se actualiza con un generador.
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
Generador de cubos en firebird erickperez6 Firebird e Interbase 1 18-09-2014 18:36:40
Actualizar un valor en un generador desde un Sp muli Firebird e Interbase 16 11-06-2008 15:56:05
Blanquear un generador autonumerico firebird Velia Firebird e Interbase 4 21-08-2007 14:58:03
Error al actualizar tabla con generador lafirma Firebird e Interbase 2 07-04-2004 01:55:21
que generador de informes es mas facil de usar con firebird/interbase? raugadel Impresión 9 25-02-2004 03:40:48


La franja horaria es GMT +2. Ahora son las 01:41:17.


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