Fórum Problemas com Trigger. #55340
26/02/2006
0
Estou tentando criar um Trigger da seguinte forma:
Create Generator G_IDClentes;
****************************
Set Generator G_IDClentes to 0001;
**********************************
Set Term^;
Create trigger Calc_ID_Clientes for TabCadClientes Before Insert as
begin
new.Id_Clientes=gen_id(G_IdClentes,1);
end ^
************************************
Quando o projeto esta em execução e eu tento incluir um registro, aparece a seguinte menssagen:
Project Sistema.Exe raised exception class EDatabaseError whith message ´Field ´ID_Clientes´must have a value´.Process sttoped.
Use Step or Run to continue.
O botão Iniciar esta asim:
procedure TF_CadClientes.BitBtn7Click(Sender: TObject);
begin
ModuloDados.CDS_TabClientes.FieldByName(´Data´).AsDateTime:=StrToDateTime(MaskEdit1.text);
ModuloDados.CDS_TabClientes.FieldByName(´Telefone´).AsString:=MaskEdit5.text;
ModuloDados.CDS_TabClientes.FieldByName(´Celular´).AsString:=MaskEdit6.text;
ModuloDados.CDS_TabClientes.ApplyUpdates(-1);
end;
Tenho um Modulo de Dados com:
SqlConection
ClienteDataSet
DataSetProvider
SQLDataSet
DataSource
Alguém pode me ajudar?
Muito Obrigado. :lol:
Create Generator G_IDClentes;
****************************
Set Generator G_IDClentes to 0001;
**********************************
Set Term^;
Create trigger Calc_ID_Clientes for TabCadClientes Before Insert as
begin
new.Id_Clientes=gen_id(G_IdClentes,1);
end ^
************************************
Quando o projeto esta em execução e eu tento incluir um registro, aparece a seguinte menssagen:
Project Sistema.Exe raised exception class EDatabaseError whith message ´Field ´ID_Clientes´must have a value´.Process sttoped.
Use Step or Run to continue.
O botão Iniciar esta asim:
procedure TF_CadClientes.BitBtn7Click(Sender: TObject);
begin
ModuloDados.CDS_TabClientes.FieldByName(´Data´).AsDateTime:=StrToDateTime(MaskEdit1.text);
ModuloDados.CDS_TabClientes.FieldByName(´Telefone´).AsString:=MaskEdit5.text;
ModuloDados.CDS_TabClientes.FieldByName(´Celular´).AsString:=MaskEdit6.text;
ModuloDados.CDS_TabClientes.ApplyUpdates(-1);
end;
Tenho um Modulo de Dados com:
SqlConection
ClienteDataSet
DataSetProvider
SQLDataSet
DataSource
Alguém pode me ajudar?
Muito Obrigado. :lol:
Marcelo_j.
Curtir tópico
+ 0
Responder
Posts
26/02/2006
Thomaz_prg
O que acontece é que a trigger é disoparada apenas quando a informação vai para o banco (no applyupdates). Você pode resolver isso de diversas formas, mas creio que uma das mais simples seria, você passar o valor 0 (zero) para o ID_Cliente, pois como sua trigger não verifica se está vazio ou não, e simplesmente passa o novo valor para o campo, vocêterá o autoincremento. Porém, para ver o valor do campo atualizado, você terá que dar um refresh no clientdataset.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)