Fórum Erro : quot;size is more than 64Kquot; #58629
03/08/2007
0
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.
Cabelo
Curtir tópico
+ 0Posts
03/08/2007
Gandalf.nho
Gostei + 0
03/08/2007
Cabelo
Gostei + 0
03/08/2007
Gandalf.nho
Gostei + 0
03/08/2007
Cabelo
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 ?????
Gostei + 0
03/08/2007
Gandalf.nho
Gostei + 0
06/08/2007
Cabelo
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
06/08/2007
Gandalf.nho
Gostei + 0
09/08/2007
Cabelo
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
09/08/2007
Gandalf.nho
Gostei + 0
09/08/2007
Cabelo
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
09/08/2007
Gandalf.nho
Gostei + 0
09/08/2007
Cabelo
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
09/08/2007
Gandalf.nho
Gostei + 0
09/08/2007
Emerson Nascimento
(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
09/08/2007
Cabelo
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
Clique aqui para fazer login e interagir na Comunidade :)