Operação complexa com set filter

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Operação complexa com set filter

Mensagem por rubens »

Olá,
Tenho uma rotina que imprime uma romaneio de produtos intercalados. O problema é que quando o cliente escolhe mais de 10 pedidos para serem impressos aparece um erro dizendo que a operação é muito complexa. Uso o set filter e a medida que o cliente vai escolhendo os pedidos uma variavel vai sendo incrementada e quando o cliente finalica a escolha uso o & para filtrar.

Assim:

Filtro += Pedido

Quando finaliza:
Set filter to &Filtro

Só que quando tem mais de dez argumentos dá erro..

Alguém sabe de algum comando ou dá uma idéia para resolver isso...

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
pagani
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 25 Ago 2003 22:32
Localização: Criciúma (SC)

Mensagem por pagani »

Rubens,

você poderia, por exemplo, substituir a variável que acumula a condição de impressão por uma matriz. Troque "Filtro += Pedido" por "AAdd(aMatriz, Pedido). No While !Eof() faça:
While !Eof()
If AScan(aMatriz, Dbf->Pedido) == 0
Skip ; Loop
Endif

...relatório...

Skip
End

Tome cuidado que o limite para as matrizes é de 4096 elementos (se não me engano). Caso seja necessário um número maior de elementos, acumule-os em um DBF temporário.
Responder