Erro : quot;size is more than 64Kquot;
Colegas...
Estou criando uma procedure e na hora de compilar dá uma mensagem :
depois disso dá o erro :
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.
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
Curtidas 0
Respostas
Gandalf.nho
03/08/2007
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.
GOSTEI 0
Cabelo
03/08/2007
Esta é uma limitação do IBExpert ou do firebird ????
GOSTEI 0
Gandalf.nho
03/08/2007
Do Firebird
GOSTEI 0
Cabelo
03/08/2007
Certo...
Bom... seguí sua sugestão e alterei a procedure com ececute procedure ..
A mensagem sobre o tamanho da procedure parou.
agora o erro é :
O que é isso ?????
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 ?????
GOSTEI 0
Gandalf.nho
03/08/2007
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á?
GOSTEI 0
Cabelo
03/08/2007
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... ??????
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... ??????
GOSTEI 0
Gandalf.nho
03/08/2007
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.
GOSTEI 0
Cabelo
03/08/2007
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 ???
Vixi... se tirar a última linha do relatório que dá mais ou menos umas 30 linhas de código, funciona....
O q fazer ???
GOSTEI 0
Gandalf.nho
03/08/2007
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?
GOSTEI 0
Cabelo
03/08/2007
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 =
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 =
GOSTEI 0
Gandalf.nho
03/08/2007
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.
GOSTEI 0
Cabelo
03/08/2007
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 ??
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 ??
GOSTEI 0
Gandalf.nho
03/08/2007
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.
GOSTEI 0
Emerson Nascimento
03/08/2007
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)
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.
(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.
GOSTEI 0
Cabelo
03/08/2007
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...
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...
GOSTEI 0
Cabelo
03/08/2007
Colegas...
Muito Obrigado pela ajuda.... funcionou blz..
ficou bem menor o código... era só pensar um pouco... rssss..
Valeu mesmo...
Muito Obrigado pela ajuda.... funcionou blz..
ficou bem menor o código... era só pensar um pouco... rssss..
CREATE PROCEDURE RELAT_GERENCIAL_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 V_DESC INTEGER; 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; V_DESC = 1; while (:V_DESC <= 23) do begin if (V_DESC = 1) then C_DESC = ´Quantidade de Propostas Emitidas´; else if (V_DESC = 2) then C_DESC = ´Quantidade de Propostas Aprovadas´; else if (V_DESC = 3) then C_DESC = ´Quantidade de Obras Executadas´; else if (V_DESC = 4) then C_DESC = ´Quantidade de Empregados´; else if (V_DESC = 5) then C_DESC = ´Índice de Absenteísmo de Empregado´; else if (V_DESC = 6) then C_DESC = ´Quantidade de Acidentes de Trabalho´; else if (V_DESC = 7) then C_DESC = ´Quantidade de Hora Normais Trabalhadas´; else if (V_DESC = 8) then C_DESC = ´Valor da Folha de Pagamento´; else if (V_DESC = 9) then C_DESC = ´Quantidade de Hora Extras Trabalhadas´; else if (V_DESC = 10) then C_DESC = ´Valor Pago em Horas Extras´; else if (V_DESC = 11) then C_DESC = ´Total de Manutenções Preventivas´; else if (V_DESC = 12) then C_DESC = ´Total de Manutenções Corretivas´; else if (V_DESC = 13) then C_DESC = ´Volume de Compras´; else if (V_DESC = 14) then C_DESC = ´Valor do Patrimônio´; else if (V_DESC = 15) then C_DESC = ´Valor Gasto com Manutenção (Insumos)´; else if (V_DESC = 16) then C_DESC = ´Valor Gasto com Manutenção (M.D.O.)´; else if (V_DESC = 17) then C_DESC = ´Valor de Propotas Aprovadas (Valor de Face)´; else if (V_DESC = 18) then C_DESC = ´Valor Total de Faturamento´; else if (V_DESC = 19) then C_DESC = ´Valor Total de Despesas´; else if (V_DESC = 20) then C_DESC = ´Outras Receitas´; else if (V_DESC = 21) then C_DESC = ´Resultado Financeiro Geral´; else if (V_DESC = 22) then C_DESC = ´Valor de Recebimentos em Atraso´; else if (V_DESC = 23) then C_DESC = ´Valor de Despesas em Atraso´; 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; if (:V_DESC = 18) then begin if (:V_TRIMESTRE = 1) then V_VALOR_TOTAL_TRI_1_ANO_1 = :V_VALOR_TOTAL_TRI_1_ANO_1 + :V_VALOR; else if (:V_TRIMESTRE = 2) then V_VALOR_TOTAL_TRI_2_ANO_1 = :V_VALOR_TOTAL_TRI_2_ANO_1 + :V_VALOR; else if (:V_TRIMESTRE = 3) then V_VALOR_TOTAL_TRI_3_ANO_1 = :V_VALOR_TOTAL_TRI_3_ANO_1 + :V_VALOR; else if (:V_TRIMESTRE = 4) then V_VALOR_TOTAL_TRI_4_ANO_1 = :V_VALOR_TOTAL_TRI_4_ANO_1 + :V_VALOR; end if (:V_DESC = 19) then begin if (:V_TRIMESTRE = 1) then V_VALOR_TOTAL_TRI_1_ANO_1 = :V_VALOR_TOTAL_TRI_1_ANO_1 - :V_VALOR; else if (:V_TRIMESTRE = 2) then V_VALOR_TOTAL_TRI_2_ANO_1 = :V_VALOR_TOTAL_TRI_2_ANO_1 - :V_VALOR; else if (:V_TRIMESTRE = 3) then V_VALOR_TOTAL_TRI_3_ANO_1 = :V_VALOR_TOTAL_TRI_3_ANO_1 - :V_VALOR; else if (:V_TRIMESTRE = 4) then V_VALOR_TOTAL_TRI_4_ANO_1 = :V_VALOR_TOTAL_TRI_4_ANO_1 - :V_VALOR; end if (:V_DESC = 21) then begin if (:V_TRIMESTRE = 1) then C_VALOR_TRI_1_ANO_1 = :V_VALOR_TOTAL_TRI_1_ANO_1; else if (:V_TRIMESTRE = 2) then C_VALOR_TRI_2_ANO_1 = :V_VALOR_TOTAL_TRI_2_ANO_1; else if (:V_TRIMESTRE = 3) then C_VALOR_TRI_3_ANO_1 = :V_VALOR_TOTAL_TRI_3_ANO_1; else if (:V_TRIMESTRE = 4) then C_VALOR_TRI_4_ANO_1 = :V_VALOR_TOTAL_TRI_4_ANO_1; end 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; if (:V_DESC = 18) then begin if (:V_TRIMESTRE = 1) then V_VALOR_TOTAL_TRI_1_ANO_2 = :V_VALOR_TOTAL_TRI_1_ANO_2 + :V_VALOR; else if (:V_TRIMESTRE = 2) then V_VALOR_TOTAL_TRI_2_ANO_2 = :V_VALOR_TOTAL_TRI_2_ANO_2 + :V_VALOR; else if (:V_TRIMESTRE = 3) then V_VALOR_TOTAL_TRI_3_ANO_2 = :V_VALOR_TOTAL_TRI_3_ANO_2 + :V_VALOR; else if (:V_TRIMESTRE = 4) then V_VALOR_TOTAL_TRI_4_ANO_2 = :V_VALOR_TOTAL_TRI_4_ANO_2 + :V_VALOR; end if (:V_DESC = 19) then begin if (:V_TRIMESTRE = 1) then V_VALOR_TOTAL_TRI_1_ANO_2 = :V_VALOR_TOTAL_TRI_1_ANO_2 - :V_VALOR; else if (:V_TRIMESTRE = 2) then V_VALOR_TOTAL_TRI_2_ANO_2 = :V_VALOR_TOTAL_TRI_2_ANO_2 - :V_VALOR; else if (:V_TRIMESTRE = 3) then V_VALOR_TOTAL_TRI_3_ANO_2 = :V_VALOR_TOTAL_TRI_3_ANO_2 - :V_VALOR; else if (:V_TRIMESTRE = 4) then V_VALOR_TOTAL_TRI_4_ANO_2 = :V_VALOR_TOTAL_TRI_4_ANO_2 - :V_VALOR; end if (:V_DESC = 21) then begin if (:V_TRIMESTRE = 1) then C_VALOR_TRI_1_ANO_2 = :V_VALOR_TOTAL_TRI_1_ANO_2; else if (:V_TRIMESTRE = 2) then C_VALOR_TRI_2_ANO_2 = :V_VALOR_TOTAL_TRI_2_ANO_2; else if (:V_TRIMESTRE = 3) then C_VALOR_TRI_3_ANO_2 = :V_VALOR_TOTAL_TRI_3_ANO_2; else if (:V_TRIMESTRE = 4) then C_VALOR_TRI_4_ANO_2 = :V_VALOR_TOTAL_TRI_4_ANO_2; end 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; if (:V_DESC = 18) then begin if (:V_TRIMESTRE = 1) then V_VALOR_TOTAL_TRI_1_ANO_3 = :V_VALOR_TOTAL_TRI_1_ANO_3 + :V_VALOR; else if (:V_TRIMESTRE = 2) then V_VALOR_TOTAL_TRI_2_ANO_3 = :V_VALOR_TOTAL_TRI_2_ANO_3 + :V_VALOR; else if (:V_TRIMESTRE = 3) then V_VALOR_TOTAL_TRI_3_ANO_3 = :V_VALOR_TOTAL_TRI_3_ANO_3 + :V_VALOR; else if (:V_TRIMESTRE = 4) then V_VALOR_TOTAL_TRI_4_ANO_3 = :V_VALOR_TOTAL_TRI_4_ANO_3 + :V_VALOR; end if (:V_DESC = 19) then begin if (:V_TRIMESTRE = 1) then V_VALOR_TOTAL_TRI_1_ANO_3 = :V_VALOR_TOTAL_TRI_1_ANO_3 - :V_VALOR; else if (:V_TRIMESTRE = 2) then V_VALOR_TOTAL_TRI_2_ANO_3 = :V_VALOR_TOTAL_TRI_2_ANO_3 - :V_VALOR; else if (:V_TRIMESTRE = 3) then V_VALOR_TOTAL_TRI_3_ANO_3 = :V_VALOR_TOTAL_TRI_3_ANO_3 - :V_VALOR; else if (:V_TRIMESTRE = 4) then V_VALOR_TOTAL_TRI_4_ANO_3 = :V_VALOR_TOTAL_TRI_4_ANO_3 - :V_VALOR; end if (:V_DESC = 21) then begin if (:V_TRIMESTRE = 1) then C_VALOR_TRI_1_ANO_3 = :V_VALOR_TOTAL_TRI_1_ANO_3; else if (:V_TRIMESTRE = 2) then C_VALOR_TRI_2_ANO_3 = :V_VALOR_TOTAL_TRI_2_ANO_3; else if (:V_TRIMESTRE = 3) then C_VALOR_TRI_3_ANO_3 = :V_VALOR_TOTAL_TRI_3_ANO_3; else if (:V_TRIMESTRE = 4) then C_VALOR_TRI_4_ANO_3 = :V_VALOR_TOTAL_TRI_4_ANO_3; end end V_I = :V_I + 1; V_ANO = :V_ANO + 1; end V_TRIMESTRE = :V_TRIMESTRE + 1; end suspend; V_DESC = :V_DESC + 1; end end
Valeu mesmo...
GOSTEI 0