mpcrj1806 Posted July 23, 2008 Report Share Posted July 23, 2008 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 Quote Link to comment Share on other sites More sharing options...
mpcrj1806 Posted July 23, 2008 Author Report Share Posted July 23, 2008 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 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 23, 2008 Report Share Posted July 23, 2008 //-> 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 Quote Link to comment Share on other sites More sharing options...
eevaldo Posted July 23, 2008 Report Share Posted July 23, 2008 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 Quote Link to comment Share on other sites More sharing options...
viol Posted July 23, 2008 Report Share Posted July 23, 2008 use o ORDSCOPE como nosso amigo KAPIABA diz, eu tambem insistia em usar SET FILTER depois que entendi o ORDSCOPE não tem lentidão nenhuma.. tudo fica istantaneo Viol Quote Link to comment Share on other sites More sharing options...
helio1361303486 Posted July 23, 2008 Report Share Posted July 23, 2008 Caro Viol, Qual programa utilizou para fazer esse Banner? Estou à procura de programas que façam logotipos com letras em relevo e sombreados. mas que seja fácil. rs Abraço. Hélio xHarbour /WS / PellesC Quote Link to comment Share on other sites More sharing options...
viol Posted July 23, 2008 Report Share Posted July 23, 2008 COREL 12id=size6> depois que o kapiaba disse que meu banner estava horrorivel, tive que pagar uma cerveja pro meu desenhista fazer. Viol Quote Link to comment Share on other sites More sharing options...
gunafe Posted July 23, 2008 Report Share Posted July 23, 2008 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" Quote Link to comment Share on other sites More sharing options...
Kbelo Posted July 23, 2008 Report Share Posted July 23, 2008 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. Quote Link to comment Share on other sites More sharing options...
gunafe Posted July 23, 2008 Report Share Posted July 23, 2008 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" Quote Link to comment Share on other sites More sharing options...
emotta Posted July 23, 2008 Report Share Posted July 23, 2008 esse é o pior código que eu ja vi na vida. Procure usar macros para facilitar codigos repetidos. Quote Link to comment Share on other sites More sharing options...
mpcrj1806 Posted July 23, 2008 Author Report Share Posted July 23, 2008 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. Quote Link to comment Share on other sites More sharing options...
mpcrj1806 Posted July 23, 2008 Author Report Share Posted July 23, 2008 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!!!!! Quote Link to comment Share on other sites More sharing options...
mpcrj1806 Posted July 23, 2008 Author Report Share Posted July 23, 2008 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!!!!! Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 24, 2008 Report Share Posted July 24, 2008 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 Quote Link to comment Share on other sites More sharing options...
gunafe Posted July 24, 2008 Report Share Posted July 24, 2008 up! Luiz Augusto São José dos Pinhais - PR Harbour47 + Five2.8 + Verce Vamos Aderir:"Retorne avisando se a dica funcionou" Quote Link to comment Share on other sites More sharing options...
mpcrj1806 Posted July 24, 2008 Author Report Share Posted July 24, 2008 Valeu Kaipaba, vou fazer esta implementacao. Abs Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 24, 2008 Report Share Posted July 24, 2008 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 Quote Link to comment Share on other sites More sharing options...
gunafe Posted July 24, 2008 Report Share Posted July 24, 2008 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" Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 24, 2008 Report Share Posted July 24, 2008 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 Quote Link to comment Share on other sites More sharing options...
gunafe Posted July 24, 2008 Report Share Posted July 24, 2008 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" Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 24, 2008 Report Share Posted July 24, 2008 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 Quote Link to comment Share on other sites More sharing options...
gunafe Posted July 24, 2008 Report Share Posted July 24, 2008 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" Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.