trigger não funciona
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:
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
Curtidas 0
Respostas
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+
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
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
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
22/08/2004
Tente pôr False no campo no SQLQuery.
GOSTEI 0
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 :
Veja se percebe alguma diferença para a sua...
T+
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