Página 3 de 3

Enviado: 13 Fev 2008 00:04
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.

Enviado: 13 Fev 2008 00:27
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 
      ...