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
...