Jump to content
Fivewin Brasil

Set Filter, Por que?


mpcrj1806

Recommended Posts

Caros amigos,

Apesar de poucas mensagens postadas, nao possuo o conhecimento em FW dos demais, ja encontro-me junto de voces a muito a + de 3 anos. Estou migrando meu sistema para FW+xHarbour a algum tempo. Estive no ultimo encontro em Guaraulhos e pude conhecer pessoalmete figuras ilustres desse nosso mundo de desenvolvimeto.

Contudo nossos clienrs nao querem saber quando vai ficar pronta a nova versao, ele quer seu problema resolvido ontem.

Venho atravez desta tentar solucionar/minimizar o tempo de respota do comando set filter. Sera que alguem ja mexeu neste comando?

O novo sistema tera novas formas e tipos de indices que irao diminuir este tempo. Mas para hoje tenho que invetar ou descobrir um meio de fazer que este comando tenha uma performance menhor nas maquinas que nao o servidor. Meus clientes possuem maquinas atualizadas, com memoria, com Win XP SE, espaço de HD, etc. Mas mesmo assim o desempenho mas estaçoes eh ridiculamente lento. O volume de dados gira em torno de 150.000 registros por base de dado. Posto abaixo uma parte de meu codigo e aguardo alguma ajuda. Uso DBF/DBT con NTX.

IF TCLAS1 = "C".OR.TCLAS1 = "R"

SELE 1

SET FILTER TO

IF NORALT = "NOR"

SELE 4

SET FILTER TO

IF TCLAS1 = "R"

SET ORDER TO 10

ELSE

SET ORDER TO 4

ENDIF

IF TCODPRO = 'Todos'

IF TCODCLI = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ENDIF

ELSE

IF TCODCLI = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ENDIF

ENDIF

ELSE

IF TCODPRO = 'Todos'

SELE 5

SET ORDER TO 4

IF TCODCLI = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ENDIF

ELSE

SELE 5

SET ORDER TO 4

IF TCODCLI = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ENDIF

ENDIF

ENDIF

ELSEIF TCLAS1 = "P".OR.TCLAS1='D'

IF NORALT = "NOR"

SELE 4

IF TCLAS1='D'

SET ORDER TO 10

ELSE

SET ORDER TO 3

ENDIF

IF TCODPRO = 'Todos'

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ENDIF

ENDIF

ELSE

SELE 5

IF TCLAS1='D'

SET ORDER TO 6

ELSE

SET ORDER TO 3

ENDIF

IF TCODPRO = 'Todos'

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ENDIF

ENDIF

ENDIF

ELSEIF TCLAS1 = "A"

IF NORALT = "NOR"

SELE 4

SET ORDER TO 3

IF TCODPRO ='Todos'

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO=SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO=SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO

endif

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ENDIF

ENDIF

ELSE

SELE 5

SET ORDER TO 3

IF TCODPRO ='Todos'

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ENDIF

ENDIF

ENDIF

ENDIF

Link to comment
Share on other sites

Caros amigos,

Apesar de poucas mensagens postadas, nao possuo o conhecimento em FW dos demais, ja encontro-me junto de voces a muito a + de 3 anos. Estou migrando meu sistema para FW+xHarbour a algum tempo. Estive no ultimo encontro em Guaraulhos e pude conhecer pessoalmete figuras ilustres desse nosso mundo de desenvolvimeto.

Contudo nossos clienrs nao querem saber quando vai ficar pronta a nova versao, ele quer seu problema resolvido ontem.

Venho atravez desta tentar solucionar/minimizar o tempo de respota do comando set filter. Sera que alguem ja mexeu neste comando?

O novo sistema tera novas formas e tipos de indices que irao diminuir este tempo. Mas para hoje tenho que invetar ou descobrir um meio de fazer que este comando tenha uma performance menhor nas maquinas que nao o servidor. Meus clientes possuem maquinas atualizadas, com memoria, com Win XP SE, espaço de HD, etc. Mas mesmo assim o desempenho mas estaçoes eh ridiculamente lento. O volume de dados gira em torno de 150.000 registros por base de dado. Posto abaixo uma parte de meu codigo e aguardo alguma ajuda. Uso DBF/DBT con NTX.

IF TCLAS1 = "C".OR.TCLAS1 = "R"

SELE 1

SET FILTER TO

IF NORALT = "NOR"

SELE 4

SET FILTER TO

IF TCLAS1 = "R"

SET ORDER TO 10

ELSE

SET ORDER TO 4

ENDIF

IF TCODPRO = 'Todos'

IF TCODCLI = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ENDIF

ELSE

IF TCODCLI = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ENDIF

ENDIF

ELSE

IF TCODPRO = 'Todos'

SELE 5

SET ORDER TO 4

IF TCODCLI = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ENDIF

ELSE

SELE 5

SET ORDER TO 4

IF TCODCLI = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO CODCLI = SUBS(TCODCLI,1,(LEN(RTRIM(TCODCLI)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ENDIF

ENDIF

ENDIF

ELSEIF TCLAS1 = "P".OR.TCLAS1='D'

IF NORALT = "NOR"

SELE 4

IF TCLAS1='D'

SET ORDER TO 10

ELSE

SET ORDER TO 3

ENDIF

IF TCODPRO = 'Todos'

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ENDIF

ENDIF

ELSE

SELE 5

IF TCLAS1='D'

SET ORDER TO 6

ELSE

SET ORDER TO 3

ENDIF

IF TCODPRO = 'Todos'

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO PR_COD = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ENDIF

ENDIF

ENDIF

ELSEIF TCLAS1 = "A"

IF NORALT = "NOR"

SELE 4

SET ORDER TO 3

IF TCODPRO ='Todos'

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO=SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO=SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.TIPPRO=TOQUE

ENDIF

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO

endif

ENDIF

GO TOP

ELSE

IF TTIPMOV0 = 'D'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='S'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'P'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR='P'.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSEIF TTIPMOV0 = 'N'

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND.DEVEDOR=' '.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.(QDT=SPACE(1).OR.QDT='V').AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

ENDIF

GO TOP

ENDIF

ENDIF

ELSE

SELE 5

SET ORDER TO 3

IF TCODPRO ='Todos'

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

ELSE

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.TIPPRO=TOQUE

ENDIF

GO TOP

ENDIF

ELSE

IF TPR_COD = "Todos"

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO<>space(5).and.DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ELSE

IF LEN(TNOMPROES)<>0

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES.AND.TIPPRO=TOQUE

else

SET FILTER TO AJUPRO = SUBS(TPR_COD,1,(LEN(RTRIM(TPR_COD)))) .AND. DATSER >= DATAREL1 .AND. DATSER <= DATAREL2.AND.CODPRO=TCODPRO.AND.TIPPRO=TOQUE

endif

GO TOP

ENDIF

ENDIF

ENDIF

ENDIF

Link to comment
Share on other sites

//-> Experimente trocar os SET FILTERS por ORDSCOPE. Exemplo:


//-> Indice por DATSER

IF LEN(TNOMPROES)<>0

/*

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND. ;

SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES .AND. ;

TIPPRO=TOQUE

*/

( Banco:cAlias )->( OrdScope( 0, DATAREL1 ) ) // data inicial

( Banco:cAlias )->( OrdScope( 1, DATAREL2 ) ) // data final

ELSE

/*

SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND. ;

TIPPRO = TOQUE

*/

( Banco:cAlias )->( OrdScope( 0, DATAREL1 ) ) // data inicial

( Banco:cAlias )->( OrdScope( 1, DATAREL2 ) ) // data final

ENDIF

GO TOP

id=code>id=code>

E NÃO USE MAIS INDICES .NTX, TROQUE PARA .CDX.

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Ola,

não use set filter pois desde o tempo do clipper ele é lento.

Não sei se é consulta ou relatorio, mas um jeito de resolver essa situação é trabalhar com arquivos temporarios, monte os arquivos temporarios com os registroa que atendam a sua pesquisa e trabalhe em cima desses arquivos.

ex.

while ! eof()

if data < data .and. codigo == codigo

gera registro no arq.temporario

endif

skip

enddo

um laço desse é muito mais rapido do que um se filter, fora aqueles travamentos que acontecem quando tenta-se mover o ponteiro.

Evaldo Wagner

FiveWin2.4 Clipper5.2e xHarbour for Linux

Blinker7.0 @say

softwag@oi.com.br

Link to comment
Share on other sites

Amigos,

A idéia é usar o ordescope mesmo. O problema é que ainda estamos usando ntx, que no momento não é viavel passar para cdx, porque esta versão é modo console. Vamos usar cdx na nova versão, enquanto não fica pronta, temos que achar a solução e o cliente não quer nem saber como faremos isso. Pesquisando no forum, achei um tópico que fala do AsScope(), para NTX, inclusive com exemplo de como usar. O unico problema, é que o código do AsScope() não esta junto com o exemplo. Deste modo, não tem como resolver o problema do set filter. Alguem tem idéia de onde posso baixar o codigo da função?

Agradeço por qualquer ajuda,

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"

Link to comment
Share on other sites

tente usar o ADS e ver se consegue minimizar este problema.

garanto que a Performance vai melhorar mas recomento o Ordscope com ADS

Marcelo Michels

marcelo@infototal.com.br

celo.michels@hotmail.com

xHarbour 1.1 + Fwh 8.01 + WorkShop + Bcc 5.82 + WvwTools + SQLRDD + xMate.

Link to comment
Share on other sites

O problema de usar o ADS é que usamos DESCEND em alguns indices e com o ADS, isso não funciona(DESCEND), por isso desistimos de usar o ADS.

[]´s

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"

Link to comment
Share on other sites

Amigos, so tenho a agradecer suas sugestoes e vamos tentar testa-las. Em virtude da labuta so pude responder agora. Tendo em vista a opcao do ORDSCOPE ser a melhor ainda nao podemos utiliza-la tendo em vista nao ter a possibilidade de migrar para CDX. Aguardo informacoes sobre o AsScope(), que na minha esperenca pode vir a funcionar.

Abs.

Link to comment
Share on other sites

Caro Sr Emotta, pelo visto o Sr. nao entendeu nossa solicitacao. Gostariamos da colaboracao quanto a um comando especefico(SET FILTER). Nao foi solicitado opiniao se nosso codigo eh bom, bonito, feio ou ruim, bem como se esta otimizado, se faz "balance line", processamento "bath" se eh cliente-servidor, ou "Stand alone" se por nossa opcao ultilizarmos Ifs, macros, blocos de codigo, orientacao a objeto ou quaisquer filosofias de analise e programacao. Se o Sr. possuir o conhecimento nescessario, pela sua resposta isso eh certo, para solucionar a questao principal antecipadamente agradecemos. Caso contrario.... PREFIRO NAO CONTAR!!!!!

Link to comment
Share on other sites

Caro Sr Emotta, pelo visto o Sr. nao entendeu nossa solicitacao. Gostariamos da colaboracao quanto a um comando especefico(SET FILTER). Nao foi solicitado opiniao se nosso codigo eh bom, bonito, feio ou ruim, bem como se esta otimizado, se faz "balance line", processamento "bath" se eh cliente-servidor, ou "Stand alone" se por nossa opcao ultilizarmos Ifs, macros, blocos de codigo, orientacao a objeto ou quaisquer filosofias de analise e programacao. Se o Sr. possuir o conhecimento nescessario, pela sua resposta isso eh certo, para solucionar a questao principal antecipadamente agradecemos. Caso contrario.... PREFIRO NAO COMENTAR!!!!!

Link to comment
Share on other sites

citação:

Amigos, so tenho a agradecer suas sugestoes e vamos tentar testa-las. Em virtude da labuta so pude responder agora. Tendo em vista a opcao do ORDSCOPE ser a melhor ainda nao podemos utiliza-la tendo em vista nao ter a possibilidade de migrar para CDX. Aguardo informacoes sobre o AsScope(), que na minha esperenca pode vir a funcionar.

Abs.


id=quote>id=quote>

OLÃ, MESMO QUE ESTEJAS USANDO CLIPPER EM MODO CONSOLE, PASSAR TEUS INDICES A .CDX, NÃO DEMORARà MAIS QUE UMA HORA. COISA MUITO SIMPLES, COM TRES LINHAS DE PROGRAMAÇÃO E A INVOCAÇÃO DA BIBLIOTECA CDX DO CLIPPER, SERà INSTANTANEO.

Qualquer duvida, grite.

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

citação:

up!

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"


id=quote>id=quote>

Luiz, cual a dúvida??? UP??

Estamos aqui para isto, este forum existe, para servi-lo.

http://www.fivewin.com.br/exibedicas.asp?id=623

http://www.fivewin.com.br/exibedicas.asp?id=445

http://www.fivewin.com.br/exibedicas.asp?id=390

http://www.fivewin.com.br/exibedicas.asp?id=97

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Bom dia Amigos,

citação:

Valeu Kaipaba, vou fazer esta implementacao.

Abs


id=quote>id=quote>

Somente uma pequena correção, não é Kaipaba e sim Kapiaba, hehe!!!

João, passar para cdx não seria problema, agora, somente me tira uma duvida, na sua primeira resposta

citação:

//-> Experimente trocar os SET FILTERS por ORDSCOPE. Exemplo:

//-> Indice por DATSER IF LEN(TNOMPROES)<>0 /* SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND. ; SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES .AND. ; TIPPRO=TOQUE */ ( Banco:cAlias )->( OrdScope( 0, DATAREL1 ) ) // data inicial ( Banco:cAlias )->( OrdScope( 1, DATAREL2 ) ) // data final ELSE /* SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND. ; TIPPRO = TOQUE */ ( Banco:cAlias )->( OrdScope( 0, DATAREL1 ) ) // data inicial ( Banco:cAlias )->( OrdScope( 1, DATAREL2 ) ) // data final ENDIF GO TOP

E NÃO USE MAIS INDICES .NTX, TROQUE PARA .CDX.

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

Voce montou o ordscope apenas com uma das chaves do filtro, a pergunta é: "É possivel usar todas as chaves do filtro no ordscope, ou somente do jeito que voce mostrou?"

Se sim, realmente não vai resolver o problema, porque o filtro vai ficar imcompleto. Agora, somente pra esclarecer melhor, a lentidão se da na ESTAÇÃO, no servidor a resposta é razoavel. Resolvendo o problema da lentidão, ou achando a causa do problema, resolvemos a questão.

[]´s

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"

Link to comment
Share on other sites

citação:

Bom dia Amigos,

citação:

Valeu Kaipaba, vou fazer esta implementacao.

Abs


id=quote>id=quote>

Somente uma pequena correção, não é Kaipaba e sim Kapiaba, hehe!!!

João, passar para cdx não seria problema, agora, somente me tira uma duvida, na sua primeira resposta

citação:

//-> Experimente trocar os SET FILTERS por ORDSCOPE. Exemplo:

//-> Indice por DATSER IF LEN(TNOMPROES)<>0 /* SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND. ; SUBS(NOMPRO,1,(LEN(TNOMPROES)))=TNOMPROES .AND. ; TIPPRO=TOQUE */ ( Banco:cAlias )->( OrdScope( 0, DATAREL1 ) ) // data inicial ( Banco:cAlias )->( OrdScope( 1, DATAREL2 ) ) // data final ELSE /* SET FILTER TO DATSER >= DATAREL1 .AND. DATSER <= DATAREL2 .AND. ; TIPPRO = TOQUE */ ( Banco:cAlias )->( OrdScope( 0, DATAREL1 ) ) // data inicial ( Banco:cAlias )->( OrdScope( 1, DATAREL2 ) ) // data final ENDIF GO TOP

E NÃO USE MAIS INDICES .NTX, TROQUE PARA .CDX.

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

Voce montou o ordscope apenas com uma das chaves do filtro, a pergunta é: "É possivel usar todas as chaves do filtro no ordscope, ou somente do jeito que voce mostrou?"

Se sim, realmente não vai resolver o problema, porque o filtro vai ficar imcompleto. Agora, somente pra esclarecer melhor, a lentidão se da na ESTAÇÃO, no servidor a resposta é razoavel. Resolvendo o problema da lentidão, ou achando a causa do problema, resolvemos a questão.

[]´s

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"


id=quote>id=quote>

LUIZ, TO MEIO CONFUSO, VOCES TRABALHAM JUNTOS??

LUIZ, ESQUEÇA A PALAVRA ´FILTRO´ COMECE A PENSAR EM INDICE.

O COMANDO ORDSCOPE, TRABALHA COM O ´TAG´-> INDICE PELO QUAL VOCE QUER QUE O USUARIO VISUALIZE OS DADOS.

VOCE CRIA O INDICE, E MANDA O ORDSCOPE ´PEGA-LO´. É SÓ ISSO.

SE NÃO EXISTIR UM INDICE, O ORDSCOPE RETORNARà NULO.

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

João,

Respondendo sua pergunta, sim, eu trabalho para o Mauricio, só que em outro projeto, estou dando uma força nesta questão da lentidão.

Seguinte, voce observou a que a condição do "filtro" não trabalha somente com data inicio/data fim, existem mais algumas variantes a serem satisfeitas. A lentidão, como eu disse antes, se da somente na estação, esta é a questão a ser resolvida.

[]´s

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"

Link to comment
Share on other sites

citação:

João,

Respondendo sua pergunta, sim, eu trabalho para o Mauricio, só que em outro projeto, estou dando uma força nesta questão da lentidão.

Seguinte, voce observou a que a condição do "filtro" não trabalha somente com data inicio/data fim, existem mais algumas variantes a serem satisfeitas. A lentidão, como eu disse antes, se da somente na estação, esta é a questão a ser resolvida.

[]´s

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"


id=quote>id=quote>

NA ESTAÇÃO, CUAL É A CONFIGURAÇÃO DA MAQUINA??

O WINDOWS É XP??

VOCE PODE CRIAR UM ARQUIVO.TMP EM VEZ DO SET FILTER, INDEXA A GOSTO, FICARÃ MAIS RÃPIDO, O QUE DARÃ NA MESMA COM O ORDSCOPE, JÃ QUE O INDICE(TAG) SERÃ O MESMO DO TEMP.

VERIFIQUE O POTENCIAL DA MAQUINA... PODE ESTAR AHI, O PROBLEMA. EM UM PENTIUM QUATRO OU SUPERIOR, OS SET FILTERS FICAM MUITO RÃPIDOS, TESTEI E APROVEI.

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

João, ainda bem que voce esta de plantão só monitorando as postagens no forum, penso até que tem uma luz que acende ai ao lado do seu micro quando chega uma nova mensagem, hehe!!

João, as maquinas são novas, com boa memoria e espaço em hd, essa lentidão de resposta pode estar realmente ligada ao filtro, vamos testar a criação do arquivo temporario, resolvendo a questão, retormo informando, valeu por seu tempo e paciencia em tentar ajudar, grande abraço.

Luiz Augusto

São José dos Pinhais - PR

Harbour47 + Five2.8 + Verce

Vamos Aderir:"Retorne avisando se a dica funcionou"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...