relatórios... como aumentar a performace???

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ah, sim. Obrigado. Boa lembrança. Não me lembrava desse fonte que foi uma excelente adaptação do colega que postou. Então fica mais fácil ainda. É só adaptar esse código para trabalhar com uma thread secundária e ir mostrando o relatório conforme ele estiver sendo finalizado.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Eu particularmente sempre achei o SET RELATION lento e talvez a lentidao que vc tenha seja no momento do INDEX ON.

Para o caso de usar SCOPE voce pode fazer assim:

- Seu arquivo PEDIDO deve possuir um indice pelo campo DATA.
- Seu RDD deve ser o CDX.
- Desabilite as linha INDEX ON ... e SEEK VDATAI
- Use desta forma:

Código: Selecionar todos

   @ 0,0 SAY "Deseja filtrar cliente(0 para todos):" GET nQualCliente PICTURE "99999"
   ...
   dbSelectArea( "PEDIDO" )
   // Coloque o numero da ordem 
   OrdSetFocus( 1 ) 
   // Limpe o buffer dos escopos
   OrdScope(0, NIL )
   OrdScope(1, NIL )
   // Limpe o buffer dos filtros
   dbSetFilter( NIL, NIL )
   // Proceda com o escopo dos dados
   OrdScope(0, Ctod("01/01/2007") )
   OrdScope(1, Ctod("31/12/2007") )
   // Caso queira filtrar os pedidos de um cliente especifico
   if nQualCliente > 0
      dbSetFilter( {|| PEDIDO->CODCLI = nQualCliente}, "PEDIDO->CODCLI = "+Str(nQualCliente) )
   endif
   dbGoTop()

   SET RELATION TO CODCLI INTO CLIENTE, TO CODVED INTO VENDEDOR 

   DO WHILE !EOF() .and. data<=vdataf 
      ...
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder