Create Trigger com IBQuery e FB

Delphi

17/08/2007

// "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

Marcosrocha

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

17/08/2007

Não use o IBQuery para isso, e sim o IBScript.


GOSTEI 0
POSTAR