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 ; ^
CLIENTE_GEN es un generador.
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;
Por cierto, es mejor que no utilizas el SQLClientDataSet (yo solo lo utilizo en consultas, nunca cuando se harán modificaciones). Borland lo ha eliminado en Delphi 7, sustituyendolo por otro componente. Lo mejor es utilizar 3 componentes : 1 TSQLQuery + 1 TDataSetProvider + 1 TClientDataSet.
Saludos.