Create Trigger com IBQuery e FB
// "DROPO" A TRIGGER POR PROBLEMAS DE DEPENDÊNCIA if not DM.Transaction.InTransaction then DM.Transaction.StartTransaction; DM.QRCadastro.SQL.Clear; DM.QRCadastro.SQL.Add(´DROP TRIGGER TU_DTBAIXA´); DM.QRCadastro.ExecSQL; DM.Transaction.CommitRetaining; // DROPO VPA_VLPENDENTE (DECIMAL (15,2)) DA TABELA DELE E RECRIO COMO (DECIMAL (15,4)) E DEPOIS RECRIO A TRIGGER if not DM.Transaction.InTransaction then DM.Transaction.StartTransaction; DM.QRCadastro.SQL.Clear; DM.QRCadastro.SQL.Add(´CREATE TRIGGER TU_DTBAIXA FOR VENDAPARCELA´); DM.QRCadastro.SQL.Add(´ACTIVE BEFORE UPDATE POSITION 0´); DM.QRCadastro.SQL.Add(´AS DECLARE VARIABLE DTBAIXA DATE;´); DM.QRCadastro.SQL.Add(´BEGIN´); DM.QRCadastro.SQL.Add(´ IF (NEW.VPA_VLPENDENTE >= NEW.VPA_VALOR) THEN´); DM.QRCadastro.SQL.Add(´ NEW.VPA_DTBAIXA = NULL;´); DM.QRCadastro.SQL.Add(´ IF (NEW.VPA_VLPENDENTE < NEW.VPA_VALOR) THEN´); DM.QRCadastro.SQL.Add(´ BEGIN´); DM.QRCadastro.SQL.Add(´ SELECT MAX(BXA_DTBAIXA) FROM BAIXA´); DM.QRCadastro.SQL.Add(´ WHERE PON_CODIGO = NEW.PON_CODIGO´); DM.QRCadastro.SQL.Add(´ AND VEN_CODIGO = NEW.VEN_CODIGO´); DM.QRCadastro.SQL.Add(´ AND VPA_CODIGO = NEW.VPA_CODIGO INTO DTBAIXA;´); DM.QRCadastro.SQL.Add(´ NEW.VPA_DTBAIXA = :DTBAIXA;´); DM.QRCadastro.SQL.Add(´ END´); DM.QRCadastro.SQL.Add(´END´); DM.QRCadastro.ExecSQL; DM.Transaction.CommitRetaining;
Quando dá o ExecSQL de criar a trigger recebo uma exception dizendo ´Invalid Command´... Idéias?
PS.: Sem usar IBX
Marcosrocha
Curtidas 0
Respostas
Gandalf.nho
17/08/2007
Não use o IBQuery para isso, e sim o IBScript.
GOSTEI 0