GARANTIR DESCONTO

Fórum Erro : quot;size is more than 64Kquot; #58629

03/08/2007

0

Colegas...

Estou criando uma procedure e na hora de compilar dá uma mensagem :

This procedure size is more than 64K It may cause some problems with compiling or executing this SP later


depois disso dá o erro :

can´t format message 13:896 -- message file C:\ARQUIVOS DE PROGRAMAS\HK-SOFTWARE\firebird.msg not found. Dynamic SQL Error. SQL error code = -104. Unexpected end of command.



Gostaria de saber o que fazer... pois a procedure é realmente grande e não posso diminuir os comandos e nem separá-los... pois ela cria um relatórioi gerencial da empresa toda... tem mais ou menos umas 2600 linhas...

como resolver este problema ???

OBS : Compilo com IBExpert e utilizo Firebird 2.0

grato.


Cabelo

Cabelo

Responder

Posts

03/08/2007

Gandalf.nho

O único jeito é diminuir o tamanho do texto. Veja se é possível passar parte do código para SPs separadas e depois chamá-las de dentro da SP principal.


Responder

Gostei + 0

03/08/2007

Cabelo

Esta é uma limitação do IBExpert ou do firebird ????


Responder

Gostei + 0

03/08/2007

Gandalf.nho

Do Firebird


Responder

Gostei + 0

03/08/2007

Cabelo

Certo...

Bom... seguí sua sugestão e alterei a procedure com ececute procedure ..

A mensagem sobre o tamanho da procedure parou.

agora o erro é :

can´t format message 13:393 -- message file C:\ARQUIVOS DE PROGRAMAS\HK-SOFTWARE\firebird.msg not found. unsuccessful metadata update. unsupported DYN verb.


O que é isso ?????


Responder

Gostei + 0

03/08/2007

Gandalf.nho

Tem algum erro, mas ele não consegue encontrar o arquivo onde essas mensagens são armazenadas para mostrar a mensagem correta. Já checou esse caminho para ver se o arquivo está lá?


Responder

Gostei + 0

06/08/2007

Cabelo

Já sim... e o arquivo está lá...

Esta ainda relacionado com o tamanho do arquivo... diminuí uma parte e funcionou sem erro... o problema é que a parte que tirei não pode ser excluída... affffff..... como vou resolver este problema...

Devia ter feito este relatório direto no delphi... com certeza não tem limite de tamanho....

Vc tem alguma sugestão... ??????


Responder

Gostei + 0

06/08/2007

Gandalf.nho

Para fazer como SP, só desmembrando o código mesmo. Tente identificar um bloco de código grande que possa ser passado para uma SP separada ou se tiver algum SQL grande com muitos joins, tente criar uma view e chame-a a partir da SP, tudo isso ajuda a diminuir o tamanho.


Responder

Gostei + 0

09/08/2007

Cabelo

O problema é que não consigo separar nada....

Vixi... se tirar a última linha do relatório que dá mais ou menos umas 30 linhas de código, funciona....

O q fazer ???


Responder

Gostei + 0

09/08/2007

Gandalf.nho

Estranho uma SP tão grande que não possa ser desmembrada. Não tem nenhum bloco que você possa separar e só chamar passando/recebendo os parâmetros necessários?


Responder

Gostei + 0

09/08/2007

Cabelo

Já desmembrei o que dava...

Não sei mais como fazer..

segue o código :

[code:1:f88525905f]CREATE PROCEDURE RELAT_GERENCIAL_FINANC_TRI(
I_ANO_INICIAL INTEGER,
I_COD_EMPRESA CHAR(3))
RETURNS (
C_DESC VARCHAR(50),
C_VALOR_TRI_1_ANO_1 FLOAT,
C_VALOR_TRI_2_ANO_1 FLOAT,
C_VALOR_TRI_3_ANO_1 FLOAT,
C_VALOR_TRI_4_ANO_1 FLOAT,
C_VALOR_TRI_1_ANO_2 FLOAT,
C_VALOR_TRI_2_ANO_2 FLOAT,
C_VALOR_TRI_3_ANO_2 FLOAT,
C_VALOR_TRI_4_ANO_2 FLOAT,
C_VALOR_TRI_1_ANO_3 FLOAT,
C_VALOR_TRI_2_ANO_3 FLOAT,
C_VALOR_TRI_3_ANO_3 FLOAT,
C_VALOR_TRI_4_ANO_3 FLOAT)
AS
DECLARE VARIABLE V_VALOR FLOAT;
DECLARE VARIABLE V_ANO INTEGER;
DECLARE VARIABLE V_I INTEGER;
DECLARE VARIABLE V_TRIMESTRE INTEGER;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_1_ANO_1 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_2_ANO_1 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_3_ANO_1 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_4_ANO_1 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_1_ANO_2 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_2_ANO_2 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_3_ANO_2 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_4_ANO_2 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_1_ANO_3 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_2_ANO_3 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_3_ANO_3 FLOAT;
DECLARE VARIABLE V_VALOR_TOTAL_TRI_4_ANO_3 FLOAT;
begin
V_VALOR_TOTAL_TRI_1_ANO_1 = 0;
V_VALOR_TOTAL_TRI_2_ANO_1 = 0;
V_VALOR_TOTAL_TRI_3_ANO_1 = 0;
V_VALOR_TOTAL_TRI_4_ANO_1 = 0;
V_VALOR_TOTAL_TRI_1_ANO_2 = 0;
V_VALOR_TOTAL_TRI_2_ANO_2 = 0;
V_VALOR_TOTAL_TRI_3_ANO_2 = 0;
V_VALOR_TOTAL_TRI_4_ANO_2 = 0;
V_VALOR_TOTAL_TRI_1_ANO_3 = 0;
V_VALOR_TOTAL_TRI_2_ANO_3 = 0;
V_VALOR_TOTAL_TRI_3_ANO_3 = 0;
V_VALOR_TOTAL_TRI_4_ANO_3 = 0;

C_DESC = ´Quantidade de Propostas Emitidas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Quantidade de Propostas Aprovadas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Quantidade de Obras Executadas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Quantidade de Empregados´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Índice de Absenteísmo de Empregado´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

V_VALOR = V_VALOR * 0.025;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Quantidade de Acidentes de Trabalho´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Quantidade de Hora Normais Trabalhadas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor da Folha de Pagamento´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Quantidade de Hora Extras Trabalhadas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor Pago em Horas Extras´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Total de Manutenções Preventivas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Total de Manutenções Corretivas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Volume de Compras´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor do Patrimônio´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor Gasto com Manutenção (Insumos)´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor Gasto com Manutenção (M.D.O.)´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor de Propotas Aprovadas (Valor de Face)´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor Total de Faturamento´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_1_ANO_1 = :V_VALOR_TOTAL_TRI_1_ANO_1 + :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_2_ANO_1 = :V_VALOR_TOTAL_TRI_2_ANO_1 + :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_3_ANO_1 = :V_VALOR_TOTAL_TRI_3_ANO_1 + :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_4_ANO_1 = :V_VALOR_TOTAL_TRI_4_ANO_1 + :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_1_ANO_2 = :V_VALOR_TOTAL_TRI_1_ANO_2 + :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_2_ANO_2 = :V_VALOR_TOTAL_TRI_2_ANO_2 + :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_3_ANO_2 = :V_VALOR_TOTAL_TRI_3_ANO_2 + :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_4_ANO_2 = :V_VALOR_TOTAL_TRI_4_ANO_2 + :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_1_ANO_3 = :V_VALOR_TOTAL_TRI_1_ANO_3 + :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_2_ANO_3 = :V_VALOR_TOTAL_TRI_2_ANO_3 + :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_3_ANO_3 = :V_VALOR_TOTAL_TRI_3_ANO_3 + :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_4_ANO_3 = :V_VALOR_TOTAL_TRI_4_ANO_3 + :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Valor Total de Despesas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_1_ANO_1 = :V_VALOR_TOTAL_TRI_1_ANO_1 - :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_2_ANO_1 = :V_VALOR_TOTAL_TRI_2_ANO_1 - :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_3_ANO_1 = :V_VALOR_TOTAL_TRI_3_ANO_1 - :V_VALOR;
end
else if ((:V_I = 1) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_4_ANO_1 = :V_VALOR_TOTAL_TRI_4_ANO_1 - :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_1_ANO_2 = :V_VALOR_TOTAL_TRI_1_ANO_2 - :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_2_ANO_2 = :V_VALOR_TOTAL_TRI_2_ANO_2 - :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_3_ANO_2 = :V_VALOR_TOTAL_TRI_3_ANO_2 - :V_VALOR;
end
else if ((:V_I = 2) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_2 = :V_VALOR;
V_VALOR_TOTAL_TRI_4_ANO_2 = :V_VALOR_TOTAL_TRI_4_ANO_2 - :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_1_ANO_3 = :V_VALOR_TOTAL_TRI_1_ANO_3 - :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 2)) then
begin
C_VALOR_TRI_2_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_2_ANO_3 = :V_VALOR_TOTAL_TRI_2_ANO_3 - :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 3)) then
begin
C_VALOR_TRI_3_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_3_ANO_3 = :V_VALOR_TOTAL_TRI_3_ANO_3 - :V_VALOR;
end
else if ((:V_I = 3) and (V_TRIMESTRE = 4)) then
begin
C_VALOR_TRI_4_ANO_3 = :V_VALOR;
V_VALOR_TOTAL_TRI_4_ANO_3 = :V_VALOR_TOTAL_TRI_4_ANO_3 - :V_VALOR;
end
V_I = :V_I + 1;
V_ANO = :V_ANO + 1;
end
V_TRIMESTRE = :V_TRIMESTRE + 1;
end
suspend;

C_DESC = ´Outras Receitas´;

C_VALOR_TRI_1_ANO_1 = 0;
C_VALOR_TRI_2_ANO_1 = 0;
C_VALOR_TRI_3_ANO_1 = 0;
C_VALOR_TRI_4_ANO_1 = 0;
C_VALOR_TRI_1_ANO_2 = 0;
C_VALOR_TRI_2_ANO_2 = 0;
C_VALOR_TRI_3_ANO_2 = 0;
C_VALOR_TRI_4_ANO_2 = 0;
C_VALOR_TRI_1_ANO_3 = 0;
C_VALOR_TRI_2_ANO_3 = 0;
C_VALOR_TRI_3_ANO_3 = 0;
C_VALOR_TRI_4_ANO_3 = 0;
V_TRIMESTRE = 1;
while (:V_TRIMESTRE <= 4) do
begin
V_ANO = :I_ANO_INICIAL;
V_I = 1;
while (:V_I <= 3) do
begin
V_VALOR = 0;
select C_VALOR
from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
into :V_VALOR;

if ((:V_I = 1) and (:V_TRIMESTRE = 1)) then
begin
C_VALOR_TRI_1_ANO_1 = :V_VALOR;
V_VALOR_TOTAL_TRI_1_ANO_1 =


Responder

Gostei + 0

09/08/2007

Gandalf.nho

Eu vi que tem vários desses blocos iniciados pelo C_DESC. Não tem como colocar alguns deles em separado e só passar/receber os valores necessários? Se não der para desmembrar essa sua SP vai ter que fazer tudo direto na aplicação cliente.


Responder

Gostei + 0

09/08/2007

Cabelo

Se eu entendí sua sugestão...

Seria criar uam SP para cada um dos Blocos iniciados com C_DESC e chamar a SP dentro desta ???

Acho que seria a solução....

Ou eu entendí errado ??


Responder

Gostei + 0

09/08/2007

Gandalf.nho

Não precisaria ser um SP para cada bloco, bastaria a quantidade de blocos suficientes para vc poder compilar sua SP principal. Daí na SP principal vc chama a SP secundária.


Responder

Gostei + 0

09/08/2007

Emerson Nascimento

a dica da moderadora é pra você reutilizar o código entre as atribuições a C_DESC. você pode fazer algo assim:
(se é que eu entendi o seu código, toda a instrução que você postou - que deve por volta de 1.700 linhas - resumiu-se nesta, de menos de 200 linhas)
CREATE PROCEDURE RELAT_GERENCIAL_FINANC_TRI(
  I_ANO_INICIAL INTEGER,
  I_COD_EMPRESA CHAR(3))
RETURNS (
  C_DESC VARCHAR(50),
  C_VALOR_TRI_1_ANO_1 FLOAT,
  C_VALOR_TRI_2_ANO_1 FLOAT,
  C_VALOR_TRI_3_ANO_1 FLOAT,
  C_VALOR_TRI_4_ANO_1 FLOAT,
  C_VALOR_TRI_1_ANO_2 FLOAT,
  C_VALOR_TRI_2_ANO_2 FLOAT,
  C_VALOR_TRI_3_ANO_2 FLOAT,
  C_VALOR_TRI_4_ANO_2 FLOAT,
  C_VALOR_TRI_1_ANO_3 FLOAT,
  C_VALOR_TRI_2_ANO_3 FLOAT,
  C_VALOR_TRI_3_ANO_3 FLOAT,
  C_VALOR_TRI_4_ANO_3 FLOAT)
AS
  DECLARE VARIABLE V_VALOR FLOAT;
  DECLARE VARIABLE V_ANO INTEGER;
  DECLARE VARIABLE V_I INTEGER;
  DECLARE VARIABLE V_TRIMESTRE INTEGER;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_1_ANO_1 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_2_ANO_1 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_3_ANO_1 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_4_ANO_1 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_1_ANO_2 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_2_ANO_2 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_3_ANO_2 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_4_ANO_2 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_1_ANO_3 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_2_ANO_3 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_3_ANO_3 FLOAT;
  DECLARE VARIABLE V_VALOR_TOTAL_TRI_4_ANO_3 FLOAT;

  DECLARE VARIABLE N_DESC INTEGER; // contador da descrição
begin
  V_VALOR_TOTAL_TRI_1_ANO_1 = 0;
  V_VALOR_TOTAL_TRI_2_ANO_1 = 0;
  V_VALOR_TOTAL_TRI_3_ANO_1 = 0;
  V_VALOR_TOTAL_TRI_4_ANO_1 = 0;
  V_VALOR_TOTAL_TRI_1_ANO_2 = 0;
  V_VALOR_TOTAL_TRI_2_ANO_2 = 0;
  V_VALOR_TOTAL_TRI_3_ANO_2 = 0;
  V_VALOR_TOTAL_TRI_4_ANO_2 = 0;
  V_VALOR_TOTAL_TRI_1_ANO_3 = 0;
  V_VALOR_TOTAL_TRI_2_ANO_3 = 0;
  V_VALOR_TOTAL_TRI_3_ANO_3 = 0;
  V_VALOR_TOTAL_TRI_4_ANO_3 = 0;

  n_desc = 1;

  while (:n_desc <= 20) do
  begin
    if (n_desc = 1) then
      C_DESC = ´Quantidade de Propostas Emitidas´;
    else if (n_desc = 2) then
      C_DESC = ´Quantidade de Propostas Aprovadas´;
    else if (n_desc = 3) then
      C_DESC = ´Quantidade de Obras Executadas´;
    else if (n_desc = 4) then
      C_DESC = ´Quantidade de Empregados´;
    else if (n_desc = 5) then
      C_DESC = ´Índice de Absenteísmo de Empregado´;
    else if (n_desc = 6) then
      C_DESC = ´Quantidade de Acidentes de Trabalho´;
    else if (n_desc = 7) then
      C_DESC = ´Quantidade de Hora Normais Trabalhadas´;
    else if (n_desc = 8) then
      C_DESC = ´Valor da Folha de Pagamento´;
    else if (n_desc = 9) then
      C_DESC = ´Quantidade de Hora Extras Trabalhadas´;
    else if (n_desc = 10) then
      C_DESC = ´Valor Pago em Horas Extras´;
    else if (n_desc = 11) then
      C_DESC = ´Total de Manutenções Preventivas´;
    else if (n_desc = 12) then
      C_DESC = ´Total de Manutenções Corretivas´;
    else if (n_desc = 13) then
      C_DESC = ´Volume de Compras´;
    else if (n_desc = 14) then
      C_DESC = ´Valor do Patrimônio´;
    else if (n_desc = 15) then
      C_DESC = ´Valor Gasto com Manutenção (Insumos)´;
    else if (n_desc = 16) then
      C_DESC = ´Valor Gasto com Manutenção (M.D.O.)´;
    else if (n_desc = 17) then
      C_DESC = ´Valor de Propotas Aprovadas (Valor de Face)´;
    else if (n_desc = 18) then
      C_DESC = ´Valor Total de Faturamento´;
    else if (n_desc = 19) then
      C_DESC = ´Valor Total de Despesas´;
    else if (n_desc = 20) then
      C_DESC = ´Outras Receitas´;

    C_VALOR_TRI_1_ANO_1 = 0;
    C_VALOR_TRI_2_ANO_1 = 0;
    C_VALOR_TRI_3_ANO_1 = 0;
    C_VALOR_TRI_4_ANO_1 = 0;
    C_VALOR_TRI_1_ANO_2 = 0;
    C_VALOR_TRI_2_ANO_2 = 0;
    C_VALOR_TRI_3_ANO_2 = 0;
    C_VALOR_TRI_4_ANO_2 = 0;
    C_VALOR_TRI_1_ANO_3 = 0;
    C_VALOR_TRI_2_ANO_3 = 0;
    C_VALOR_TRI_3_ANO_3 = 0;
    C_VALOR_TRI_4_ANO_3 = 0;

    V_TRIMESTRE = 1;

    while (:V_TRIMESTRE <= 4) do
    begin
      V_ANO = :I_ANO_INICIAL;
      V_I = 1;

      while (:V_I <= 3) do
      begin
        V_VALOR = 0;
  
        select C_VALOR
        from SELECT_RELAT_FINAN_TRI(:C_DESC, :I_COD_EMPRESA, :V_ANO,
             ((:V_TRIMESTRE * 3) - 2), (:V_TRIMESTRE * 3))
        into :V_VALOR;
  
        if (:V_I = 1) then
        begin
          if (V_TRIMESTRE = 1) then
            C_VALOR_TRI_1_ANO_1 = :V_VALOR;
          else if (V_TRIMESTRE = 2) then
            C_VALOR_TRI_2_ANO_1 = :V_VALOR;
          else if (V_TRIMESTRE = 3) then
            C_VALOR_TRI_3_ANO_1 = :V_VALOR;
          else if (V_TRIMESTRE = 4)) then
            C_VALOR_TRI_4_ANO_1 = :V_VALOR;
        end
        else if (:V_I = 2) then
        begin
          if (V_TRIMESTRE = 1) then
            C_VALOR_TRI_1_ANO_2 = :V_VALOR;
          else if (V_TRIMESTRE = 2) then
            C_VALOR_TRI_2_ANO_2 = :V_VALOR;
          else if (V_TRIMESTRE = 3) then
            C_VALOR_TRI_3_ANO_2 = :V_VALOR;
          else if (V_TRIMESTRE = 4) then
            C_VALOR_TRI_4_ANO_2 = :V_VALOR;
        end
        else if (:V_I = 3) then
        begin
          if (V_TRIMESTRE = 1) then
            C_VALOR_TRI_1_ANO_3 = :V_VALOR;
          else if (V_TRIMESTRE = 2) then
            C_VALOR_TRI_2_ANO_3 = :V_VALOR;
          else if (V_TRIMESTRE = 3) then
            C_VALOR_TRI_3_ANO_3 = :V_VALOR;
          else if (V_TRIMESTRE = 4) then
            C_VALOR_TRI_4_ANO_3 = :V_VALOR;
        end
  
        V_I = :V_I + 1;
        V_ANO = :V_ANO + 1;
      end

      V_TRIMESTRE = :V_TRIMESTRE + 1;
    end

    suspend;

    n_desc = :n_desc + 1;
  end
end

aqui também poderia ser melhorada a parte da atribuição a C_DESC, desde que essa descrição possa ser trazida de uma tabela.
espero que este código resolva seu problema ou pelo menos te dê uma idéia de como resolvê-lo.


Responder

Gostei + 0

09/08/2007

Cabelo

Agora entendi...

Nossa assim com certeza vai funcionar...

Só precisarei implementar algumas linhas para a soma e subtração do resultado final que não apareceu no post, pois estava muito grande...

Gostei da solução...

Muito Obrigado...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar