FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Duda dbExpress + Interbase
Hola lista, Tengo una pequena duda, estoy trabajando con dbExpress + Interbase Server 6.01, Windows 2000 especificamente con el componente TSQLClientDataSet ( el ultimo de la paleta dbExpress) y mi duda es que tengo un Trigger + un Generador en el Server para un campo autoincrementado que es el Codigo ademas de ser Not Null y el Triger no se me ejecuta cuando estoy editabdo en el Grid. Sin embargo si se ejecuta cuando inserto datos en un administrador de IB tipo Databse WorkBench, por ejemplo.
Cuando inserto los datos a traves del Grid en mi aplicacion me dice que el campo XXX es no puede ser nulo y es que el trigger no se me esta ejecutando. Como tengo que hacer para el Trigger s e me ejecute ?? Alguna propiedad, evento, componente ?? He buscado por todas partes y no acabo de dar pie con bola ... Gracias a todos de antemano ... |
#2
|
||||
|
||||
Hola,
Cita:
Saludos. |
#3
|
||||
|
||||
Hola.
En lugar de utilizar un trigger, usa un procedimiento almacenado, o una consulta, para calcular el nuevo codigo a asignar, y haz la asignación en el evento afterinsert del clientdataset. Ejemplo de procedimiento almacenado : Código:
SET TERM ^ ; CREATE PROCEDURE "CLIENTE_Codigo" RETURNS (ID INTEGER) AS BEGIN ID = GEN_ID(CLIENTE_GEN, 1); END ^ SET TERM ; ^ Ahora, en el evento AfterInsert del clientdataset solo tienes que hacer algo como : Código:
procedure TdmData.cdsP_FamiliasAfterInsert(DataSet: TDataSet); begin spCLIENTE_Codigo.ExecProc; DataSetFieldValues['ID'] := spCLIENTE_Codigo.Params[0].Value; end; Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
|