Prestações com datas de vencimento automáticas
É o seguinte, lembra daquele trigger que vc me ajudou a criar, ou melhor, que você criou pra mim? :wink:
[url]http://delphiforum.icft.com.br/forum/viewtopic.php?t=49513&highlight=[/url]
Então, ficou perfeito, mais uma vez obrigado.
Só que apareceu mais uma coisa que gostaria de fazer nele.
Na tabela CARNE_PRESTACAO, criei um novo campo chamado DT_VENCIMENTO - eu ia fazer o cálculo das prestações via código, mas percebi que a performance vai lá pra baixo.
Gostaria então que vc me ajudasse a fazer o seguinte: Ao se criar as prestações, a data de vencimento fosse automaticamente atribuida com base na data do sistema. tipo assim:
A [b:0620cdd893]1ª[/b:0620cdd893] prestação vence na data do sistema + [b:0620cdd893]1[/b:0620cdd893] mês;
A [b:0620cdd893]2ª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]2[/b:0620cdd893] mêses;
A [b:0620cdd893]3ª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]3[/b:0620cdd893] mêses;
A [b:0620cdd893]...ª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]... [/b:0620cdd893]mêses;
A [b:0620cdd893]nª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]n [/b:0620cdd893]mêses;
[b:0620cdd893]Título removido.[/b:0620cdd893]
Para o título do tópico, procure descrever resumidamente o seu problema, e não direcionando a determinada pessoa.
Por favor, releia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.
Sandra/Moderação
SET TERM ^ ; CREATE TRIGGER "CRIAR_PRESTACOES" FOR "CARNE" ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE contador SMALLINT; BEGIN SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador; WHILE (contador > 0) DO BEGIN INSERT INTO CARNE_PRESTACOES (ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO) VALUES (new.ID_CARNE, NULL, NULL, :contador, 0); contador = contador - 1; END END ^ COMMIT WORK ^ SET TERM ; ^
Então, ficou perfeito, mais uma vez obrigado.
Só que apareceu mais uma coisa que gostaria de fazer nele.
Na tabela CARNE_PRESTACAO, criei um novo campo chamado DT_VENCIMENTO - eu ia fazer o cálculo das prestações via código, mas percebi que a performance vai lá pra baixo.
Gostaria então que vc me ajudasse a fazer o seguinte: Ao se criar as prestações, a data de vencimento fosse automaticamente atribuida com base na data do sistema. tipo assim:
A [b:0620cdd893]1ª[/b:0620cdd893] prestação vence na data do sistema + [b:0620cdd893]1[/b:0620cdd893] mês;
A [b:0620cdd893]2ª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]2[/b:0620cdd893] mêses;
A [b:0620cdd893]3ª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]3[/b:0620cdd893] mêses;
A [b:0620cdd893]...ª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]... [/b:0620cdd893]mêses;
A [b:0620cdd893]nª [/b:0620cdd893]prestação vence na data do sistema + [b:0620cdd893]n [/b:0620cdd893]mêses;
SET TERM ^ ; CREATE TRIGGER "CRIAR_PRESTACOES" FOR "CARNE" ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE contador SMALLINT; BEGIN SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador; WHILE (contador > 0) DO BEGIN INSERT INTO CARNE_PRESTACOES (ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO, DT_VENCIMENTO) VALUES (new.ID_CARNE, NULL, NULL, :contador, 0, ??????????); contador = contador - 1; END END ^ COMMIT WORK ^ SET TERM ; ^
[b:0620cdd893]Título removido.[/b:0620cdd893]
Para o título do tópico, procure descrever resumidamente o seu problema, e não direcionando a determinada pessoa.
Por favor, releia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.
Sandra/Moderação
Tenil
Curtidas 0
Respostas
Tenil
10/08/2004
Insisto, só o [b:c65ac229ab]Afarias [/b:c65ac229ab]vai conseguir me ajudar.
GOSTEI 0
Fsflorencio
10/08/2004
Tenta alguma coisa do tipo:
SET TERM ^ ;
CREATE TRIGGER ´CRIAR_PRESTACOES´ FOR ´CARNE´
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE contador SMALLINT;
BEGIN
SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador;
WHILE (contador > 0) DO
BEGIN
INSERT INTO CARNE_PRESTACOES
(ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO, DT_VENCIMENTO)
VALUES (new.ID_CARNE, NULL, NULL, :contador, 0, CURRENT_DATE + 30);
contador = contador - 1;
END
END ^
COMMIT WORK ^
SET TERM ; ^
SET TERM ^ ;
CREATE TRIGGER ´CRIAR_PRESTACOES´ FOR ´CARNE´
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE contador SMALLINT;
BEGIN
SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador;
WHILE (contador > 0) DO
BEGIN
INSERT INTO CARNE_PRESTACOES
(ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO, DT_VENCIMENTO)
VALUES (new.ID_CARNE, NULL, NULL, :contador, 0, CURRENT_DATE + 30);
contador = contador - 1;
END
END ^
COMMIT WORK ^
SET TERM ; ^
GOSTEI 0
Fsflorencio
10/08/2004
Melhor ainda:
SET TERM ^ ;
CREATE TRIGGER ´CRIAR_PRESTACOES´ FOR ´CARNE´
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE contador SMALLINT;
DECLARE VARIABLE contador2 SMALLINT;
BEGIN
CONTADOR2 = 1;
SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador;
WHILE (contador2 <= contador) DO
BEGIN
INSERT INTO CARNE_PRESTACOES
(ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO, DT_VENCIMENTO)
VALUES (new.ID_CARNE, NULL, NULL, :contador, 0, CURRENT_DATE + 30 * CONTADOR2);
contador2 = contador2 + 1;
END
END ^
COMMIT WORK ^
SET TERM ; ^
SET TERM ^ ;
CREATE TRIGGER ´CRIAR_PRESTACOES´ FOR ´CARNE´
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE contador SMALLINT;
DECLARE VARIABLE contador2 SMALLINT;
BEGIN
CONTADOR2 = 1;
SELECT NU_PRESTACOES FROM CARNE_TIPO WHERE ID_TIPO_CARNE=NEW.ID_TIPO_CARNE INTO:contador;
WHILE (contador2 <= contador) DO
BEGIN
INSERT INTO CARNE_PRESTACOES
(ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO, DT_VENCIMENTO)
VALUES (new.ID_CARNE, NULL, NULL, :contador, 0, CURRENT_DATE + 30 * CONTADOR2);
contador2 = contador2 + 1;
END
END ^
COMMIT WORK ^
SET TERM ; ^
GOSTEI 0
Tenil
10/08/2004
[b:7041d8b6b8]fsflorencio[/b:7041d8b6b8], vou tentar.
Obrigado!
Obrigado!
GOSTEI 0
Afarias
10/08/2004
CURRENT_DATE + 30 * CONTADOR2
A idéia do fsflorencio está correta. E vc pode apenas usar o mesmo contador (sem precisar de mais uma variável -- contador2)
T+
GOSTEI 0
Tenil
10/08/2004
fsflorencio, funcionou perfeitamente. :D
Obrigado,
Roberto
Obrigado,
Roberto
GOSTEI 0