USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  50 segundos para exibir um relatório
Lucas Felix
SÃO PAULO
SP - BRASIL
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...
TÓPICO EDITADO
   
Lucas Felix
SÃO PAULO
SP - BRASIL
Postada em 05/08/2008 10:16 hs            
Pessoal, achei uma solução, eu executei cada insert por vez ao invés de executar todos de uma vez só... a diferença de tempo foi de 50 segundos para menos de 5 segundos...
O conceito de dividir um problema em pequenas partes...
vlw pessoal
     
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página