Postada em 05/08/2008 10:01 hs
Bom dia Pessoal, cheguei com mais uma dúvida...
[VB + PostgreSQL]
13º Salário...
O sistema gera o 13º automaticamente, com adicional noturno, INSS, FGTS e tudo mais... agora preciso de um resumo deste relatório, porém o 13º está divido em duas parcelas... como o BD não foi feito por mim as duas parcelas não possuem um vínculo fisicamente....
Para isso criei uma tabela temporária, onde eu armazenaria somente os dados necessários para o relatório...
funcionario varchar(100), parcela_1 float8 DEFAULT 0, adicional_noturno_1 float8 DEFAULT 0, fgts_1 float8 DEFAULT 0, total_1 float8 DEFAULT 0, parcela_2 float8 DEFAULT 0, adicional_noturno_2 float8 DEFAULT 0, irrf float8 DEFAULT 0, inss float8 DEFAULT 0, fgts_2 float8 DEFAULT 0, pensao float8 DEFAULT 0, total_2 float8 DEFAULT 0 e limpo cada vez que for necessário um relatório de acordo com o ano...
Para alimentar a tabela eu utilizo um insert para cada funcionário (+/- 100 funcionários)
O tempo médio é de aproximadamente dois segundos para os 100 inserts, porém quando eu passo para o VB, ele demora mais de 50 segundos, segue abaixo um dos inserts....
insert into temp_13 values ((select nome from funcionarios where id_funcionario = 10),(select valor_cred from folha_lancamento where cod_folha = (select cod_folha from folha where tipo_folha = 2 and ano_ref = '2008' and id_funcionario = 10) and nome_lancamento like '13%Sal%rio - 1% Parcela'),(select valor_cred from folha_lancamento where cod_folha = (select cod_folha from folha where tipo_folha = 2 and ano_ref = '2008' and id_funcionario = 10) and nome_lancamento like 'Adicional Noturno'),(select fgts from folha where tipo_folha = 2 and ano_ref = '2008' and id_funcionario = 10),(select valor_receber from folha where tipo_folha = 2 and ano_ref = '2008' and id_funcionario = 10),(select valor_cred from folha_lancamento where cod_folha = (select cod_folha from folha where tipo_folha = 3 and ano_ref = '2008' and id_funcionario = 10) and nome_lancamento like '13%Sal%rio'),(select valor_cred from folha_lancamento where cod_folha = (select cod_folha from folha where tipo_folha = 3 and ano_ref = '2008' and id_funcionario = 10) and nome_lancamento like 'Adicional Noturno'),(select valor_deb from folha_lancamento where cod_folha = (select cod_folha from folha where tipo_folha = 3 and ano_ref = '2008' and id_funcionario = 10) and nome_lancamento like 'IRRF'),(select valor_deb from folha_lancamento where cod_folha = (select cod_folha from folha where tipo_folha = 3 and ano_ref = '2008' and id_funcionario = 10) and nome_lancamento like 'INSS'),(select fgts from folha where tipo_folha = 3 and ano_ref = '2008' and id_funcionario = 10),(select valor_deb from folha_lancamento where cod_folha = (select cod_folha from folha where tipo_folha = 3 and ano_ref = '2008' and id_funcionario = 10) and nome_lancamento like 'Pens%o Alimenticia'),(select valor_receber from folha where tipo_folha = 3 and ano_ref = '2008' and id_funcionario = 10));
Obs: os 100 Inserts são gerados pelo próprio VB através de um loop e demora menos de 2 segundos, restando mais de 48 segundos somente para a inserção e exibição do relatório...
Estou pensando em como otimizar esse tempo já que 50 segundos é um tempo bem elevado para a exibição de um relatório com apenas 2 páginas...
Obrigado pessoal...
|