trigger não funciona

Firebird

22/08/2004

Pessoal criei um banco de dados em firebird 1.5 e dentro criei triggers para funcionar como autoincremento mas não consigo que funcione.

Estou usando o delphi 7 com dbexpress e o componente tsimpledataset montei um formulario simples com um dbdgrid um dbnavigator e um buttom para chamar o appyupdates mas não funciona tentei usar os metodos padroes com um sqlconnetion um tsqlquery, tdatasetprovider, um tclientdatase e um datasource no mesmo formulario mas tb não funcionou. ele gera a mensagem de que o campo não pode estar vazio já que ele é um campo indice

Por Favor me Ajudem estou disesperado :cry:


Mhdragon-rs

Mhdragon-rs

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

22/08/2004

Colega,

Como vc está usando trigger + generator para auto-incrementar, o campo só irá receber o valor quando na inserção efetiva no banco, por este motivo, vc precisa setar a propriedade [b:83cdda0282]Required[/b:83cdda0282] do TField em questão para [b:83cdda0282]False[/b:83cdda0282]...

Espero ter ajudado...
T+


GOSTEI 0
Mhdragon-rs

Mhdragon-rs

22/08/2004

vinicius como eu faço isso?
eu coloquei false como vc disse no campo dentro simpledataset mas não funcionou usando a mesma dinamica de formluario simples que passei


GOSTEI 0
Gandalf.nho

Gandalf.nho

22/08/2004

Tente pôr False no campo no SQLQuery.


GOSTEI 0
Vinicius2k

Vinicius2k

22/08/2004

À princípio (pq não trabalho SampleDataSet) é só isso que precisa ser feito... Se fosse numa arquitetura convencional com DataSet+Provider+ClientDataSet vc precisaria setar a propriedade do TField do DataSet e no ClientDataSet, mas no caso no SimpleDataSet não vejo onde mais poderia estar o problema...

Outra possibilidade é de que sua trigger não esteja funcionando realmente, ou seja, não esteja sendo disparada, o que é muito difícil, mas vc poderia colocar aqui o código dela ?

Esta seria uma trigger simples usada para auto-incremento :
CREATE TRIGGER TRG_CLIENTES_ID FOR CLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.IDCLIENTE IS NULL) THEN
    NEW.IDCLIENTE = GEN_ID(GEN_CLIENTES_ID,1);
END
^


Veja se percebe alguma diferença para a sua...

T+


GOSTEI 0
POSTAR