Termômetro de Processamento
Enviado: 01 Set 2012 02:57
Bom dia pessoal, estou tentando introduzir uma Função do Ramalho no meu sisteminha, mas estou tendo problemas. O que estou querendo na verdade é fazer o termômetro rodar em um processamento de relatório.
Essa é a função e a declaração do mesmo retirados do livro:
Esse é do meu relatório:
O principal erro que está gerando é o compilador não aceitar esse comando acima "T=T+ORDEM", está acusando variável não declarada..Bom, acho que vários de vocês trabalha com termômetro. Andei pesquisando no fórum e achei alguma coisa a respeito desse assunto, só que vejo o pessoal usá-lo mais em indexação de arquivos..
Se alguém poder me ajudar agradeço ...
Josmar :%
Essa é a função e a declaração do mesmo retirados do livro:
Código: Selecionar todos
FUNCTION TERMOH(VALOR)
IF VALOR <=1
PUBLIC TELABOX
SAVE SCREEN TO TELABOX
SETCOLOR("W+/N")
@ 15,09 SAY "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
@ 16,09 SAY "º PORCENTUAL DA TAREFA EXECUTADA º"
@ 17,09 SAY "ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ º"
@ 18,09 SAY "º 1 10 20 30 40 50 60 70 80 90 100 º"
@ 19,09 say "º ÚÙ...|....|...|...|...|...|...|...|...|...À¿ º"
@ 20,09 say "º ³ ³ º"
@ 21,09 SAY "º ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ º"
@ 22,09 SAY "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
ELSE
@ 20,11 SAY REPLICATE(CHR(219),VALOR/2)
ENDIF
RETURN NIL
USE ORDEM
VALOR=0
ULTIMO=LASTREC()
TERMOH(VALOR)
T=0
C=0
DO WHILE .NOT. EOF()
T=T+ORDEM
SKIP
VALOR=(++C)*100/ULTIMO
TERMOH(VALOR)
ENDDO
REST SCREEN FROM TELABOXEsse é do meu relatório:
Código: Selecionar todos
#include "OFIC.CH"
SET COLOR TO 21,79
SAVE SCREEN TO TELA1
SET COLOR TO G+/W
@ 04,07 CLEAR TO 11,51
@ 04,7 TO 11,51
SELECT 44
IF USEREDE("ORDEM",.F.,30,.F.)
IF(!FILE("ORDEMX.CDX"))
_FECHA()
INDEX ON COD TAG ORDEM_1 TO ORDEMX
INDEX ON DTOS(DATA)+DTOS(DATA)+NOME_FUNC1 TAG ORDEM_2 TO ORDEMX
INDEX ON DTOS(DATA)+DTOS(DATA)+NOME_FUNC2 TAG ORDEM_3 TO ORDEMX
_ABRE()
ENDIF
DBSETINDEX("ORDEMX")
ELSE
TONE( 250, 4 )
MENSAGEM( "Nao foi possivel abrir arquivo ORDEM", 5 )
RETURN 0
ENDIF
SELECT ORDEM
ORDSETFOCUS("ORDEM_2")
GOTO TOP
SET COLOR TO W/G+
FILTRO_1 := CTOD( " / / " )
FILTRO_2 := CTOD( " / / " )
FILTRO_3 := SPACE(10)
DATA:=FILTRO_1
DATA:=FILTRO_2
NOME_FUNC1:=FILTRO_3
@ 05, 08 SAY "Digite a data inicial:" GET FILTRO_1
@ 07, 08 SAY "Digite a data final..:" GET FILTRO_2
@ 09, 08 SAY "Digite o nome do funcion rio:" GET FILTRO_3
SET CURSOR ON
READ
SET CURSOR OFF
IF LASTKEY()=27
RESTORE SCREEN FROM TELA1
RETURN
ENDIF
VDIR:=DIRNAME()
DIRE:=VDIR+"\MEMOS"
ARQUIVO:="OFIC_02"
IMPRESSORA:="Impressora"
TIPO_PRN=""
TIPO_PRN=MENU_PRN3(ARQUIVO)
IF EMPTY(TIPO_PRN)
RETURN
ENDIF
SET CURSOR OFF
VALOR=0
ULTIMO=LASTREC()
TERMOH(VALOR)
SET PRINTER TO (ARQUIVO+".PRN")
SET DEVICE TO PRINTER
X=0
PAG=1
SAI_DA="S"
TOT_0001:=TOT_0002:=TOT_0003:=0
T=0
C=0
DO WHILE .NOT. EOF()
IF INKEY()=27
SET DEVICE TO SCREEN
SAI_DA=PERGUNTA("Continua a impress„o ?")
SET DEVICE TO PRINTER
IF SAI_DA="N"
EXIT
ENDIF
ENDIF
SET FILTER TO ORDEM->DATA>=FILTRO_1 .AND. ORDEM->DATA<=FILTRO_2 .AND. ORDEM->NOME_FUNC1=FILTRO_3
IF !(ORDEM->DATA>=FILTRO_1 .AND. ORDEM->DATA<=FILTRO_2 .AND. ORDEM->NOME_FUNC1=FILTRO_3 )
T=T+ORDEM
SKIP
VALOR=(++C)*100/ULTIMO
TERMOH(VALOR)
ENDIF
IF X=0
IF TIPO_PRN<>"T"
@ 00,01 SAY CHR(18)
ENDIF
@ 01,01 SAY CHR(15)+ "RELAT. SERVICO " + ;
" Pagina: ";
+subs(str(pag+10000,5),2)
@ 02,01 SAY "ORDEM MECANICA"+" Inicial: "+dtoc(filtro_1)+;
" Final: "+dtoc(filtro_2)+;
" Data: " +dtoc(dat_hoje)
PAG++
@ 02,01 SAY ""
@ 03,01 SAY REPL("=",77)
@ 04,001 SAY "NUMERO:"
@ 04,009 SAY "DATA:"
@ 04,020 SAY "FUNC:"
@ 04,035 SAY "M.OBRA:"
@ 04,053 SAY "PECAS:"
@ 04,069 SAY "SUBT:"
@ 05,01 SAY REPL("=",77)
X=06
ENDIF
@ X,001 SAY NUMERO
@ X,009 SAY DATA
@ X,020 SAY NOME_FUNC1
IF !EMPTY(VALOR1)
@ X,032 SAY VALOR1
ENDIF
IF !EMPTY(T12)
@ X,047 SAY T12
ENDIF
xSALDO:=VALOR1+T12
IF !EMPTY(xSALDO)
@ X,062 SAY xSALDO
ENDIF
TOT_0001=TOT_0001+VALOR1
TOT_0002=TOT_0002+T12
TOT_0003=TOT_0003+xSALDO
X=X+1
SKIP
IF X>58 .OR. EOF()
IF EOF()
TOTIMPM(2)
ELSE
TOTIMPM(1)
ENDIF
X=1
ENDIF
ENDDO
RESTORE SCREEN FROM TELABOX
EJECT
SET DEVICE TO SCREEN
FUNCTION TOTIMPM
PARA PAR1
IF PAR1=2
X=59
ENDIF
@ X+0,01 SAY REPL("-",77)
IF PAR1=2
@ X+1,001 SAY "TOTAL"
ELSE
@ X+1,001 SAY "SUBTOTAL"
ENDIF
@ X+1,032 SAY TOT_0001 PICTURE "@Z 999,999.99"
@ X+1,049 SAY TOT_0002 PICTURE "@Z 999,999.99"
@ X+1,065 SAY TOT_0003 PICTURE "@Z 999,999.99"
@ X+2,01 SAY REPL("-",77)
Se alguém poder me ajudar agradeço ...
Josmar :%