somando horas tipo Ex: HH:MM:SSSS
Moderador: Moderadores
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
somando horas tipo Ex: HH:MM:SSSS
Gente, estou desenvolvendo um sistema de cronometragem do Jeep Clube da seguinte forma: eu tenho que pegar as 4 casas do segundo. Nas competições de Jeep cada competidor dar 2 voltas, somando os 2 tempos, tempo1: 00:01:5341 e tempo2: 00:01:5721, tempo total: 00:03:5062 esse seria o tempo do competidor. Existe uma função que faça essa soma ou tenho que programar???
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Re: somando horas tipo Ex: HH:MM:SSSS
Em xHarbour tem a funcão ElapTime e não sei se ela funciona com fração de segundo.
Em Clipper eu não conheço nenhuma. Acredito que vc terá que desenvolver.
Acho que vai ter que desenvolver função para isso.
Só dê uma olhada na CA-Tools e na página de downloads do forum, por via das dúvidas.
Em Clipper eu não conheço nenhuma. Acredito que vc terá que desenvolver.
Acho que vai ter que desenvolver função para isso.
Só dê uma olhada na CA-Tools e na página de downloads do forum, por via das dúvidas.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
-
SandroBelarmino
- Usuário Nível 3

- Mensagens: 464
- Registrado em: 04 Set 2007 16:11
- Localização: Pedreira-SP
Re: somando horas tipo Ex: HH:MM:SSSS
Eu tenho essas funcoes que precisei fazer para controlar a produção de funcionários, tempo trabalhado, tempo parado, etc.
Talvez te ajude, basta voce implementar a questão da fração dos segundos.
Exemplos de uso:
Eu fiz a funcoes minutos2 pois am alguns relatórios preciso somar o tempo de trabalho de todos os funcionarios de 1 turno inteiro, entao o total de horas passava de 99.
Espero ter ajudado
Sandro.
Talvez te ajude, basta voce implementar a questão da fração dos segundos.
Código: Selecionar todos
FUNCTION DifTempo( tempoi, tempof ) // tempoi = tempo maior
wdif:=(minutos(tempoi)-minutos(tempof))/60
return (strzero(abs(val(subs(trans(wdif,'99.99'),1,2))),2,0)+':'+strzero(round((val(subs(trans(wdif,'99.99'),4,2))/100)*60,0),2,0))
FUNCTION MINUTOS( tempo ) // mandar no formato 99:99
RETURN (val(subs(tempo,1,2))*60)+val(subs(tempo,4,2))
FUNCTION SomaTempo( tempoi, tempof )
wsoma:=(minuto2(tempoi)+minutos(tempof))/60
return (strzero(abs(val(subs(trans(wsoma,'999.99'),1,3))),3,0)+':'+strzero(round((val(subs(trans(wsoma,'999.99'),5,2))/100)*60,0),2,0))
FUNCTION MINUTO2( tempo ) // mandar no formato 999:99
RETURN (val(subs(tempo,1,3))*60)+val(subs(tempo,5,2))
Código: Selecionar todos
wtrabalhou := diftempo(hr_trab,hr_parada) && mandar os parametros no formato hh:mm
wsoma := somatempo(wtempo1,wtempo2)
Espero ter ajudado
Sandro.
Alessandro R Belarmino
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Re: somando horas tipo Ex: HH:MM:SSSS
No Clipper/Dbase diretamente não dá para fazer, visto que a função TIME() retorna uma "string" na forma: HH:MM:SS;
Se os seus tempos são registrados na forma: HH:MM:SSSS então entre-os numa variável alfanumérica (CTempo), então:
nhoras := val(substr(ctempo,1,2))
nminutos := val(substr(ctempo,4,2))
nsegundos := val(substr(ctempo,7,4))
Inicie variáveis para cada elemento, e venha de segundos para horas, no seguinte raciocínio:
1. se o resultado de segundos passar de 60, adicione 1 minuto aos minutos anteriores e deixe em segundos o resultado de (segundos - 60)
2. se o resultado de minutos ultrapassar de 60, acrescentar 1 hora às horas anteriores, e deixe em minutos o resultado de (minutos - 60)
Voilá, c´est fini !
Se os seus tempos são registrados na forma: HH:MM:SSSS então entre-os numa variável alfanumérica (CTempo), então:
nhoras := val(substr(ctempo,1,2))
nminutos := val(substr(ctempo,4,2))
nsegundos := val(substr(ctempo,7,4))
Inicie variáveis para cada elemento, e venha de segundos para horas, no seguinte raciocínio:
1. se o resultado de segundos passar de 60, adicione 1 minuto aos minutos anteriores e deixe em segundos o resultado de (segundos - 60)
2. se o resultado de minutos ultrapassar de 60, acrescentar 1 hora às horas anteriores, e deixe em minutos o resultado de (minutos - 60)
Voilá, c´est fini !
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Re: somando horas tipo Ex: HH:MM:SSSS
Não está certo. Se você tiver 00:00:9999, sua formula resultará um valor numérico de 9999 segundos, que equivale a quase 3 horas. O OP, ao que me parece, precisa primeiro dividir esses segundos adicionando as frações necessárias. Uma parte para os centésimos ou milésimos de segundo. Senão não dará certo.nsegundos := val(substr(ctempo,7,4))
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Re: somando horas tipo Ex: HH:MM:SSSS
Olá,
Na CA-Tools temos as funções SecToTime e TimeToSec:
Na CA-Tools temos as funções SecToTime e TimeToSec:
Código: Selecionar todos
SECTOTIME()
Converts seconds into a time string
─────────────────────────────────────────────────────────────────────────────
Syntax
SECTOTIME(<nSeconds>, [<lHundredth>]) --> cTime
Arguments
<nSeconds> Designates the number of seconds since midnight to
convert into a character string in time format.
<lHundredth> If this optional parameter is designated as .T., the
resulting time string contains hundredths of seconds. The default is no
hundredths (.F.).
Returns
SECTOTIME() returns a time string that corresponds to <nSeconds> in the
"HH:MM:SS" or "HH:MM:SS:hh" format.
Description
This function can be applied in two areas -- to convert numeric time
spans in seconds, and to convert a point in time into the "HH:MM:SS" or
"HH:MM:SS:hh" format.
If hundredths of seconds are also desired in the time string result,
then designate the second parameter as .T.. The portion of the value
for <nSeconds> to the right of the decimal is also converted.
Notes
■ Seconds since midnight are in the range of 0 to 86400. With
larger values, the function internally executes the operation
<nSeconds>
% 86400 and then uses the result value. 86400 seconds corresponds to
an entire day.
■ There is no rounding when values like 45366.98 are converted
without hundredths.
Examples
■ Calculate the span between two times. The result is displayed
in the "HH:MM:SS" format:
nBeginning := 170
nEnd := 3656
? SECTOTIME(nEnd - nBeginning) // "00:58:06"
■ With hundredth seconds:
? SECTOTIME(45873.22, .T.) // "12:44:33:22"
Código: Selecionar todos
TIMETOSEC()
Calculates the seconds since midnight
─────────────────────────────────────────────────────────────────────────────
Syntax
TIMETOSEC(<cTime>) --> nSeconds
Argument
<cTime> Designates a character string that contains the time in the
format "HH:MM:SS:hh". The default is the system time.
Returns
The returned value designates how many seconds have elapsed between
midnight and <cTime>. Hundredths of seconds are contained as a decimal
value.
Description
When computing time periods, or when adding times, it is simpler to deal
with seconds since midnight instead of time designations. These
calculations are simplified significantly. The SECTOTIME() function
converts the result into a time designation again. Starting from back
to front, you can omit the hundredths, seconds, and minutes from the
time string that is passed as a parameter. These values are then
assumed to be "00".
If you do not specify a parameter, the function uses the current time on
the system clock.
Examples
■ A simple conversion:
? TIMETOSEC("12:44:33:22") // Result: 45873.22
■ The period between two times is calculated. The result is
displayed in seconds:
cBegin := "12:55:44:33"
cEnd := "14:56:12:22"
? TIMETOSEC(cEnd) - TIMETOSEC(cBegin) // Period in seconds
■ Possible formats:
? TIMETOSEC("12")
? TIMETOSEC("12:44)
? TIMETOSEC("12:44:33)
? TIMETOSEC("12:44:33:22")
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
Re: somando horas tipo Ex: HH:MM:SSSS
Desenvolvi ficou da seguinte forma e funciona:
---
Nota da Moderação (Maligno):
A presente mensagem foi editada para a remoção da cor diferenciada no código e inserção das tags de indentação. Destacar código com cores não faz tanta diferença quanto a indentação. Indentar torna o código muito mais fácil de seguir e entender, como pode-se perceber. Aliás, no fórum só toleramos a falta de indentação quando forem pouquíssimas linhas de código. Sempre que o código estiver sem as tags de indentação, seremos forçados a colocá-las. Portanto, por favor, faça isso você mesmo, a fim de tornar nossa vida um pouco mais fácil.
Código: Selecionar todos
FUNC MARCATEM
SELE A
SET ORDER TO 2
SEEK SFIR
COMP1:=COMP2:="SIM"
DO WHILE .T.
IF EOF()
@ 14,02 GET TINI PICT "@R 99:99:999"
@ 14,31 GET TFIN PICT "@R 99:99:999"
READ
IF TINI="0000000"
COMP1:="NAO"
ENDIF
IF TFIN="0000000"
COMP2:="NAO"
ENDIF
IF COMP1="SIM"
SET COLO TO W+/B
@ 14,20 SAY COMP1
ELSE
SET COLO TO R+/B
@ 14,20 SAY COMP1
ENDIF
IF COMP2="SIM"
SET COLO TO W+/B
@ 14,48 SAY COMP2
ELSE
SET COLO TO R+/B
@ 14,48 SAY COMP2
ENDIF
TTOT:=HORA
TTOT:= VAL(TINI)+VAL(TFIN)
TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
IF VAL(TTO1)=6
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=7
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=8
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=9
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=0
TTO2:=SUBSTR(TINI,5,1)
TTO3:=SUBSTR(TFIN,5,1)
IF TTO2="0" .AND. TTO3="0"
ELSE
TTOT:=TTOT+0000400
ENDIF
ENDIF
TTO2:=SUBSTR(TINI,5,2)
TTO3:=SUBSTR(TFIN,5,2)
TTO4:=VAL(TTO2)+VAL(TTO3)
IF TTO4>=100
TTOT:=TTOT+0000400
ENDIF
TTOT:= STRZERO(TTOT,7)
@ 14,59 SAY TTOT PICT "@R 99:99:999"
TTTOT:=TTOT
@ 18,11 SAY TBAND PICT "@R 99"
@ 18,27 SAY TINVP PICT "@R 99"
@ 18,47 SAY TAJTE PICT "@R 99"
@ 18,68 SAY TVIRA PICT "@R 99"
SET COLO TO GR+/B
@ 19,05 GET SBAN PICT "@E 99"
@ 19,13 GET SBAN1 PICT "@E 99"
@ 19,22 GET SPIS PICT "@E 99"
@ 19,32 GET SPIS1 PICT "@E 99"
@ 19,42 GET SAJU PICT "@E 99"
@ 19,53 GET SAJU1 PICT "@E 99"
@ 19,63 GET SVIR PICT "@E 99"
@ 19,70 GET SVIR1 PICT "@E 99"
READ
TBANDD:=((SBAN+SBAN1)*(TBAND*10))+((SPIS+SPIS1)*(TINVP*10))
TBANDD:=STRZERO(TBANDD,7)
TTOT:= VAL(TTTOT)+VAL(TBANDD)
TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
IF VAL(TTO1)=6
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=7
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=8
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=9
TTOT:=TTOT+0000400
ENDIF
DO WHILE .T.
IF VAL(TTO1)=0
TTO2:=SUBSTR(TINI,5,1)
TTO3:=SUBSTR(TFIN,5,1)
IF TTO2="0" .AND. TTO3="0"
ELSE
TTOT:=TTOT+0000400
ENDIF
EXIT
ENDIF
TTO2:=SUBSTR(TINI,5,2)
TTO3:=SUBSTR(TFIN,5,2)
TTO4:=VAL(TTO2)+VAL(TTO3)
IF TTO4>=100
IF TTO4<200
TTOT:=TTOT+0000400
ENDIF
ENDIF
EXIT
ENDDO
TTOT:= STRZERO(TTOT,7)
@ 14,58 GET TTOT PICT "@R 99:99:999"
READ---
Nota da Moderação (Maligno):
A presente mensagem foi editada para a remoção da cor diferenciada no código e inserção das tags de indentação. Destacar código com cores não faz tanta diferença quanto a indentação. Indentar torna o código muito mais fácil de seguir e entender, como pode-se perceber. Aliás, no fórum só toleramos a falta de indentação quando forem pouquíssimas linhas de código. Sempre que o código estiver sem as tags de indentação, seremos forçados a colocá-las. Portanto, por favor, faça isso você mesmo, a fim de tornar nossa vida um pouco mais fácil.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Re: somando horas tipo Ex: HH:MM:SSSS
Pelo que eu havia entendido o valor dos segundos seria sempre fornecido num máximo de 59:99 segundos, ou seja, 59 segundos e 99 centésimos;
assim, a minha proposição foi mal interpretada e agora a refaço:
Entre com os tempos em uma variável alfanumérica (CTempo), então:
nhoras := val(substr(ctempo,1,2))
nminutos := val(substr(ctempo,4,2))
nsegundos := val(substr(ctempo,7,4))
Inicie variáveis para cada elemento, e venha de segundos para horas, no seguinte raciocínio:
1. se o resultado de segundos passar de 6000, adicione 1 minuto aos minutos anteriores e deixe em segundos o resultado de (segundos - 6000)
2. se o resultado de minutos ultrapassar de 60, acrescentar 1 hora às horas anteriores, e deixe em minutos o resultado de (minutos - 60)
assim, a minha proposição foi mal interpretada e agora a refaço:
Entre com os tempos em uma variável alfanumérica (CTempo), então:
nhoras := val(substr(ctempo,1,2))
nminutos := val(substr(ctempo,4,2))
nsegundos := val(substr(ctempo,7,4))
Inicie variáveis para cada elemento, e venha de segundos para horas, no seguinte raciocínio:
1. se o resultado de segundos passar de 6000, adicione 1 minuto aos minutos anteriores e deixe em segundos o resultado de (segundos - 6000)
2. se o resultado de minutos ultrapassar de 60, acrescentar 1 hora às horas anteriores, e deixe em minutos o resultado de (minutos - 60)
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Re: somando horas tipo Ex: HH:MM:SSSS
Veja bem. O formato 99:99:99 diz o que? Normalmente significa HH:MM:SS (segundos sempre com duas casas). E o formato 99:99 sugere MM:SS, e não segundos e centésimos. Se você usar o format 99h99'99,99''. Aí sim, você tem a fração dos segundos (centésimos, milésimos (3 casas, claro), etc). É preciso usar um formato reconhecido. Senão, quem ver, não entenderá. Aliás, o título do tópico já está errado: tem segundos com 4 casas, o que não existe. Por isso a minha correção anterior.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
somando horas tipo Ex: HH:MM:SS.sss
Com certeza que o formato está totalmente fora do padrão, assim como falou o Maligno, você Gilberto deveria separar o tempo de fração de segundos e estes valores somar aos do campo "segundo" (caso forem superiores a 1000), porque um milissegundo é o equivalente a um segundo. E para somar corretamente hh:mm:ss eu transformaria tudo em segundos como o colega asimoes ja disse com a função TIMETOSEC() e depois transformar para o formato hora como todos conhecem através do SECTOTIME() da CT.LIB
O seu código Gilberto, está um pouco confuso, fora que faltaram algumas variáveis a serem definidas, acho que isso foi por conta do bd que nãofoi diponibilizado. E ainda faltou ENDDO e ENDIF no seu código exemplo. Para comentar eu sempre testo os códigos fontes disponibilizados, mas desta vez eu não conseguí ao certo reproduzir sua situação.
O seu código Gilberto, está um pouco confuso, fora que faltaram algumas variáveis a serem definidas, acho que isso foi por conta do bd que nãofoi diponibilizado. E ainda faltou ENDDO e ENDIF no seu código exemplo. Para comentar eu sempre testo os códigos fontes disponibilizados, mas desta vez eu não conseguí ao certo reproduzir sua situação.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Gilberto M Silva
- Usuário Nível 3

- Mensagens: 230
- Registrado em: 13 Mar 2007 18:00
- Localização: Natal-RN / Parelhas(RN) / Natal(RN)
- Contato:
Re: somando horas tipo Ex: HH:MM:SS'ss
desculpem pessoal na integra todo o codigo, da forma que está testei e está funcionando:
)
Código: Selecionar todos
*****************************************************************************
*****************************************************************************
FUNC CCLASSIF &Classificar por ordem de classificação
*****************************************************************************
SAVE SCREEN TO PRODENT
LIMPA22()
GO TOP
DO WHILE !EOF()
CATEG:=CATEGO
SELE B
APPEND BLANK
REPLACE APELID WITH CATEG+" "+CATEG
SELE A
DO WHILE CATEG = CATEGO
SAPEL:=APELID
SHOR :=HORA
TPIS1:=TPISTA1
TPIS2:=TPISTA2
TIVPI:=(TIVPIS+TIVPIS1)
CDVEI:=CDVEIC
SNOM :=NOME
SBAN :=TOTBAN
COD :=CODCLI
IF COMPLE1="SIM" .AND. COMPLE2="SIM"
SELE B
GO BOTTOM
SEQ:=SEQUEN+1
APPEND BLANK
REPLACE SEQUEN WITH SEQ
REPLACE APELID WITH SAPEL
REPLACE CODCLI WITH COD
REPLACE HORA WITH SHOR
REPLACE TPISTA1 WITH TPIS1
REPLACE TPISTA2 WITH TPIS2
REPLACE TIVPIS WITH TIVPI
REPLACE CATEGO WITH CATEG
REPLACE CDVEIC WITH CDVEI
REPLACE NOME WITH SNOM
REPLACE TOTBAN WITH SBAN
SELE A
ENDIF
SKIP
ENDDO
SEEK CATEG
DO WHILE CATEG = CATEGO
SAPEL:=APELID
SHOR :=HORA
TPIS1:=TPISTA1
TPIS2:=TPISTA2
TIVPI:=(TIVPIS+TIVPIS1)
CDVEI:=CDVEIC
SNOM :=NOME
SBAN :=TOTBAN
IF COMPLE1="NAO" .OR. COMPLE2="NAO"
IF COMPLE1="NAO" .AND. COMPLE2="NAO"
SKIP
LOOP
ENDIF
SELE B
GO BOTTOM
SEQ:=SEQUEN+1
APPEND BLANK
REPLACE SEQUEN WITH SEQ
REPLACE APELID WITH SAPEL
REPLACE CODCLI WITH COD
REPLACE HORA WITH SHOR
REPLACE TPISTA1 WITH TPIS1
REPLACE TPISTA2 WITH TPIS2
REPLACE TIVPIS WITH TIVPI
REPLACE CATEGO WITH CATEG
REPLACE CDVEIC WITH CDVEI
REPLACE NOME WITH SNOM
REPLACE TOTBAN WITH SBAN
SELE A
ENDIF
SKIP
ENDDO
SEEK CATEG
DO WHILE CATEG = CATEGO
SAPEL:=APELID
SHOR :=HORA
TPIS1:=TPISTA1
TPIS2:=TPISTA2
TIVPI:=(TIVPIS+TIVPIS1)
CDVEI:=CDVEIC
SNOM :=NOME
SBAN :=TOTBAN
IF COMPLE1="NAO" .AND. COMPLE2="NAO"
SELE B
GO BOTTOM
SEQ:=SEQUEN+1
APPEND BLANK
REPLACE SEQUEN WITH SEQ
REPLACE APELID WITH SAPEL
REPLACE CODCLI WITH COD
REPLACE HORA WITH SHOR
REPLACE TPISTA1 WITH TPIS1
REPLACE TPISTA2 WITH TPIS2
REPLACE TIVPIS WITH TIVPI
REPLACE CATEGO WITH CATEG
REPLACE CDVEIC WITH CDVEI
REPLACE NOME WITH SNOM
REPLACE TOTBAN WITH SBAN
SELE A
ENDIF
SKIP
ENDDO
ENDDO
SELE B
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[11]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "CODCLI"
CAMPO[3] = "APELID"
CAMPO[4] = "HORA"
CAMPO[5] = "TPISTA1"
CAMPO[6] = "TPISTA2"
CAMPO[7] = "CATEGO"
CAMPO[8] = "CDVEIC"
CAMPO[9] = "TOTBAN"
CAMPO[10]= "TIVPIS"
CAMPO[11]= "NOME"
DECLARE MASC[11]
MASC[1] = "@E 99"
MASC[2] = "@!"
MASC[3] = "@!"
MASC[4] = "@R 99:99:999"
MASC[5] = "@R 99:99:999"
MASC[6] = "@R 99:99:999"
MASC[7] = "@!"
MASC[8] = "@E 9999"
MASC[9] = "@E 99"
MASC[10]= "@E 99"
MASC[11]= "@!"
DECLARE CAB[11]
CAB[1] = "CLA"
CAB[2] = "Cod"
CAB[3] = "Apelido"
CAB[4] = "Tempo Total"
CAB[5] = "tempo Pista 1"
CAB[6] = "Tempo Pista 2"
CAB[7] = "Categoria"
CAB[8] = "Carro"
CAB[9] = "Bandeiras"
CAB[10]= "Iv.Pista"
CAB[11]= "Nome"
SET COLOR TO W+/R
@ 22,02 SAY "PgUp PgDn "+CHR(24)+" "+CHR(25)+" [ESC]Retorna "
SET COLO TO W+/B+*
@ 24,02 SAY " <Enter> para Imprimir "
SET COLOR TO GR/BR+
@ 24,02 SAY " <Enter> "
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
LIMPA22()
SET COLOR TO W+/R
IF LASTKEY() <> 27
IMPCLIE()
SET DEVICE TO SCREEN
@ PROW()+22,25 SAY "FIM DA LISTAGEM"
ENDIF
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
USE TELASAI EXCLUSIVE
ZAP
SELE A
RETURN
************************************
FUNCTION IMPCLIE
IMPRIME()
IF LASTKEY() = 27
RETURN .T.
ENDIF
LIMPA22()
@ 22,15 SAY "AGUARDE A IMPRESSAO !!!!!!"
PAGINA:= 1
KITIMPRI()
CABSIST()
CABCLI()
DO WHILE !EOF() .AND. INKEY() <> 27
IF PROW() < 51
@ PROW()+01,00 SAY SEQUEN PICT "@E 99"
@ PROW()+00,04 SAY "|"
@ PROW()+00,05 SAY ALLTRIM(APELID)
@ PROW()+00,28 SAY "|"
@ PROW()+00,29 SAY TPISTA1 PICT "@R 99:99:999"
@ PROW()+00,39 SAY "|"
@ PROW()+00,40 SAY TPISTA2 PICT "@R 99:99:999"
@ PROW()+00,50 SAY "|"
@ PROW()+00,51 SAY HORA PICT "@R 99:99:999"
@ PROW()+00,62 SAY "|"
@ PROW()+00,63 SAY TOTBAN PICT "@E 99"
@ PROW()+00,72 SAY "|"
@ PROW()+00,73 SAY TIVPIS PICT "@E 99"
@ PROW()+00,76 SAY CATEGO
@ PROW()+01,00 SAY "----|-----------------------|----------|----------|-----------|---------|-------------"
ELSE
PAGINA:= PAGINA + 1
EJECT
CABSIST()
CABCLI()
LOOP
ENDIF
SKIP
ENDDO
@ PROW()+01,00 SAY REPLICATE ("-",86)
SET COLO TO GR+/R+
EJECT
KITPRINT()
RETURN .T.
****************************
FUNC CABCLI
@ PROW()+01,00 SAY "RELATORIO FINAL POR CATEGORIA E CLASSIFICAۂO"
@ PROW()+01,00 SAY REPLICATE ("-",86)
@ PROW()+01,00 SAY "CLA"
@ PROW()+00,04 SAY "|"
@ PROW()+00,05 SAY "COMPETIDOR"
@ PROW()+00,28 SAY "|"
@ PROW()+00,29 SAY "PISTA 1"
@ PROW()+00,39 SAY "|"
@ PROW()+00,40 SAY "PISTA 2"
@ PROW()+00,50 SAY "|"
@ PROW()+00,51 SAY "TEMPO TOTAL"
@ PROW()+00,62 SAY "|"
@ PROW()+00,63 SAY "BANDEIRAS"
@ PROW()+00,72 SAY "|IV"
@ PROW()+01,00 SAY "----|-----------------------|----------|----------|-----------|---------|-------------"
RETURN .T.
********************************************
FUNC CCLASSP1
SAVE SCREEN TO PRODENT
LIMPA22()
SET ORDER TO 3
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[9]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "APELID"
CAMPO[3] = "TPISTA1"
CAMPO[4] = "HORA"
CAMPO[5] = "CATEGO"
CAMPO[6] = "CDVEIC"
CAMPO[7] = "NOME"
DECLARE MASC[9]
MASC[1] = "@E 99"
MASC[2] = "@!"
MASC[3] = "@R 99:99:999"
MASC[4] = "@R 99:99:999"
MASC[5] = "@!"
MASC[6] = "@E 9999"
MASC[7] = "@!"
DECLARE CAB[9]
CAB[1] = "CLA"
CAB[2] = "Apelido"
CAB[3] = "tempo Pista 1"
CAB[4] = "Tempo Total"
CAB[5] = "Categoria"
CAB[6] = "Carro"
CAB[7] = "Nome"
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
RETURN
********************************************
FUNC CCLASSP2 &listar por pista
SAVE SCREEN TO PRODENT
LIMPA22()
SET ORDER TO 4
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[9]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "APELID"
CAMPO[3] = "TPISTA2"
CAMPO[4] = "HORA"
CAMPO[5] = "CATEGO"
CAMPO[6] = "CDVEIC"
CAMPO[7] = "NOME"
DECLARE MASC[9]
MASC[1] = "@E 99"
MASC[2] = "@!"
MASC[3] = "@R 99:99:999"
MASC[4] = "@R 99:99:999"
MASC[5] = "@!"
MASC[6] = "@E 9999"
MASC[7] = "@!"
DECLARE CAB[9]
CAB[1] = "CLA"
CAB[2] = "Apelido"
CAB[3] = "tempo Pista 2"
CAB[4] = "Tempo Total"
CAB[5] = "Categoria"
CAB[6] = "Carro"
CAB[7] = "Nome"
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
RETURN
********************************************
FUNC CCLASSP3
*FINALIDADE: CLASSIFICAÇÃO GERAL
********************************************
SAVE SCREEN TO PRODENT
LIMPA22()
SET ORDER TO 5
GO TOP
SET COLOR TO GR+/BR+
DECLARE CAMPO[9]
CAMPO[1] = "APELID"
CAMPO[2] = "TPISTA1"
CAMPO[3] = "TPISTA2"
CAMPO[4] = "TOTBAN"
CAMPO[5] = "HORA"
CAMPO[6] = "CATEGO"
CAMPO[7] = "CDVEIC"
CAMPO[8] = "NOME"
DECLARE MASC[9]
MASC[1] = "@!"
MASC[2] = "@R 99:99:999"
MASC[3] = "@R 99:99:999"
MASC[4] = "@E 99"
MASC[5] = "@R 99:99:999"
MASC[6] = "@!"
MASC[7] = "@E 9999"
MASC[8] = "@!"
DECLARE CAB[9]
CAB[1] = "Apelido"
CAB[2] = "tempo Pista 1"
CAB[3] = "tempo Pista 2"
CAB[4] = "Band"
CAB[5] = "Tempo Total"
CAB[6] = "Categoria"
CAB[7] = "Carro"
CAB[8] = "Nome"
DBEDIT(05,01,21,78,CAMPO,"",MASC,CAB)
RESTORE SCREEN FROM PRODENT
SET COLO TO GR/B+
RETURN
****************************************************************************
****************************************************************************
FUNC ACRROM
* PROGRAMA: ACRROM.PRG
* FINALIDADE: fazer lan‡amento de tomada de tempo dos competidores
****************************************************************************
SELE A
USE ROMANE alias ROMANE1 shared
IF !NETERR()
SET INDEX TO ROMANE1
ELSE
MOTIVO()
RETURN
ENDIF
SELE B
USE TELASAI
SELE C
USE DEVEDOR alias DEVEDOR1 shared
IF !NETERR()
SET INDEX TO DEVEDOR1
ELSE
MOTIVO()
RETURN
ENDIF
SELE D
USE PUNICAO
TBAND:=BANDEIRA
TINVP:=INVPISTA
TAJTE:=AJTERCEI
TVIRA:=VIRADA
LIMPA22()
SET CURSOR ON
ALTETEMP:="N"
@22,02 SAY "Deseja Alterar Arquivo de Tempo?? <S>im ou <N>Æo:" GET ALTETEMP VALID(ALTETEMP$"SN")
READ
IF ALTETEMP = "S"
ALTTEMPO()
SET CURSOR OFF
CLOSE ALL
SET COLO TO GR+/R+
REST SCREEN FROM MENUU
RETURN
ENDIF
SELE A
*************************
CONTROLE:= 3
DATX := DATE()
SFIR := SPACE(04)
SMATE := SPACE(15)
SOBS := SPACE(23)
RHORA := TIME()
RPLACA:= SPACE(07)
RLOCAL:= SPACE(23)
RPRECO:= 0
SNOMCLI:= SPACE(40)
SAPELI1:= SPACE(25)
SCARRO := SPACE(12)
SNUMERO:= 0
SCDCATE:= SPACE(01)
SCATEGO:= SPACE(20)
SCLUBE := "JEEP CLUBE DE PARELHAS-RN "
SFABANO:= SPACE(11)
SEVENTO:= SPACE(21)
TINI := "0000000"
TFIN := "0000000"
SBAN := 0
SBAN1:= 0
SPIS := 0
SPIS1:= 0
SAJU := 0
SAJU1:= 0
SVIR := 0
SVIR1:= 0
STOM := 0
DO WHILE .T.
SELE A
LIMPA22()
TELATEMP()
SET CURSOR ON
@ 08,02 GET DATX
SET COLO TO W+/B+
@ 24,02 SAY " <Esc>=Retorna; F4=Classifica‡Æo; F5=Pista 1; F6=Pista 2; F7=Tempo Geral "
SET ORDER TO 6
GO TOP
SET KEY -3 TO CCLASSIF
SET KEY -4 TO CCLASSP1
SET KEY -5 TO CCLASSP2
SET KEY -6 TO CCLASSP3
READ
SET KEY -3 TO
SET KEY -4 TO
SET KEY -5 TO
SET ORDER TO 1
LIMPA22()
SET COLO TO GR+/B+
IF LASTKEY() = 27
SET CURSOR OFF
CLOSE ALL
SET COLO TO GR+/R+
REST SCREEN FROM MENUU
RETURN
ENDIF
DO WHILE .T.
SFIR := 0
VALO := 0
SELE C
GO BOTTOM
@ 24,02 SAY "éltimo C¢digo Cadastrado:"
@ 24,28 SAY CODCLI PICT "@R 9999"
GO TOP
SET COLO TO W+/B+
@ 22,02 SAY "Digite o C¢digo do Competidor ou <Enter> para Consultar, <Esc> Retorna"
@ 08,15 GET SFIR PICT "@E 9999"
SET COLO TO GR+/B+
@ 22,35 SAY "<Enter>"
@ 22,59 SAY "<Esc>"
READ
SFIR :=STRZERO(SFIR,4)
SNOME:=SPACE(40)
LIMPA22()
SET COLO TO GR+/B+
IF LASTKEY() = 27
EXIT
ENDIF
IF SFIR = "0000"
SET ORDER TO 2
PRODCLI()
SET ORDER TO 1
ENDIF
SFIR := ALLTRIM(SFIR)
SFIR := REPL("0",2-LEN(SFIR)) + SFIR
LIMPA22()
SEEK SFIR
IF !EOF()
SNOM := NOMCLI
RQUANT:= 0
RVALO := 0
RLOCAL:= APELI1
SET CURSOR ON
DO WHILE .T.
SET COLO TO W+/B
@ 08,16 SAY SFIR
@ 08,24 SAY NOMCLI
@ 10,03 SAY APELI1
RLOCK()
@ 10,30 GET CARRO
@ 10,45 GET NUMERO PICT "@E 9999"
@ 10,55 SAY "("+CDCATE+")"+" "+CATEGO
@ 12,03 SAY CLUBE
@ 12,34 SAY "³"
@ 12,36 SAY FABANO
@ 12,48 GET EVENTO
READ
CLIE:=NOMCLI
SNUM:=NUMERO
SCAT:=CATEGO
MARCATEM()
LIMPA22()
SET COLO TO GR+/B+
EXIT
ENDDO
EXIT
ENDIF
SET CURSOR ON
@ 08,16 SAY SFIR
@ 08,23 GET SNOMCLI
READ
SAPELI1:= SNOMCLI
@ 10,02 GET SAPELI1
@ 10,30 GET SCARRO
@ 10,45 GET SNUMERO PICT "@E 9999"
READ
SAVE SCREEN TO XUXA
SET COLO TO W+/G+
@ 10,54 GET SCDCATE VALID(SCDCATE$"MGFDE")
@ 08,29 SAY " M = ORIGINAL "
@ 09,29 SAY " G = GAIOLA 4x2 "
@ 10,29 SAY " F = FOR€A LIVRE "
@ 11,29 SAY " D = DIESEL "
@ 12,29 SAY " E = ESPECIAL "
READ
SCATE:=SPACE(01)
REST SCREEN FROM XUXA
IF SCDCATE = "M"
SCATE:="ORIGINAL"
ELSEIF SCDCATE = "G"
SCATE:="GAIOLA 4x2"
ELSEIF SCDCATE = "F"
SCATE:="FOR€A LIVRE"
ELSEIF SCDCATE = "D"
SCATE:="DIESEL"
ELSEIF SCDCATE = "E"
SCATE:="ESPECIAL"
ENDIF
SET COLO TO W+/B+
@ 10,55 SAY SCATE
READ
@ 12,02 GET SCLUBE
@ 12,34 SAY "³"
@ 12,35 GET SFABANO
@ 12,48 GET SEVENTO
READ
APPEND BLANK
REPLACE CODCLI WITH SFIR
REPLACE NOMCLI WITH SNOMCLI
REPLACE APELI1 WITH SAPELI1
REPLACE CLUBE WITH SCLUBE
REPLACE CARRO WITH SCARRO
REPLACE NUMERO WITH SNUMERO
REPLACE CATEGO WITH SCATE
REPLACE CDCATE WITH SCDCATE
REPLACE FABANO WITH SFABANO
REPLACE EVENTO WITH SEVENTO
SLOCAL:=SAPELI1
RLOCAL:=SAPELI1
SNOM:=SNOMCLI
SNUM:=NUMERO
SCAT:=CATEGO
MARCATEM()
SET COLO TO GR/B+
EXIT
ENDDO
ENDDO
RETURN
********************************************************************
********************************************************************
FUNC MARCATEM
SELE A
SET ORDER TO 2
SEEK SFIR
COMP1:=COMP2:="SIM"
DO WHILE .T.
IF EOF()
@ 14,02 GET TINI PICT "@R 99:99:999"
@ 14,31 GET TFIN PICT "@R 99:99:999"
READ
IF TINI="0000000"
COMP1:="NAO"
ENDIF
IF TFIN="0000000"
COMP2:="NAO"
ENDIF
IF COMP1="SIM"
SET COLO TO W+/B
@ 14,20 SAY COMP1
ELSE
SET COLO TO R+/B
@ 14,20 SAY COMP1
ENDIF
IF COMP2="SIM"
SET COLO TO W+/B
@ 14,48 SAY COMP2
ELSE
SET COLO TO R+/B
@ 14,48 SAY COMP2
ENDIF
TTOT:=HORA
TTOT:= VAL(TINI)+VAL(TFIN)
TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
IF VAL(TTO1)=6
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=7
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=8
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=9
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=0
TTO2:=SUBSTR(TINI,5,1)
TTO3:=SUBSTR(TFIN,5,1)
IF TTO2="0" .AND. TTO3="0"
ELSE
TTOT:=TTOT+0000400
ENDIF
ENDIF
TTO2:=SUBSTR(TINI,5,2)
TTO3:=SUBSTR(TFIN,5,2)
TTO4:=VAL(TTO2)+VAL(TTO3)
IF TTO4>=100
TTOT:=TTOT+0000400
ENDIF
TTOT:= STRZERO(TTOT,7)
@ 14,59 SAY TTOT PICT "@R 99:99:999"
TTTOT:=TTOT
@ 18,11 SAY TBAND PICT "@R 99"
@ 18,27 SAY TINVP PICT "@R 99"
@ 18,47 SAY TAJTE PICT "@R 99"
@ 18,68 SAY TVIRA PICT "@R 99"
SET COLO TO GR+/B
@ 19,05 GET SBAN PICT "@E 99"
@ 19,13 GET SBAN1 PICT "@E 99"
@ 19,22 GET SPIS PICT "@E 99"
@ 19,32 GET SPIS1 PICT "@E 99"
@ 19,42 GET SAJU PICT "@E 99"
@ 19,53 GET SAJU1 PICT "@E 99"
@ 19,63 GET SVIR PICT "@E 99"
@ 19,70 GET SVIR1 PICT "@E 99"
READ
TBANDD:=((SBAN+SBAN1)*(TBAND*10))+((SPIS+SPIS1)*(TINVP*10))
TBANDD:=STRZERO(TBANDD,7)
TTOT:= VAL(TTTOT)+VAL(TBANDD)
TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
IF VAL(TTO1)=6
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=7
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=8
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=9
TTOT:=TTOT+0000400
ENDIF
DO WHILE .T.
IF VAL(TTO1)=0
TTO2:=SUBSTR(TINI,5,1)
TTO3:=SUBSTR(TFIN,5,1)
IF TTO2="0" .AND. TTO3="0"
ELSE
TTOT:=TTOT+0000400
ENDIF
EXIT
ENDIF
TTO2:=SUBSTR(TINI,5,2)
TTO3:=SUBSTR(TFIN,5,2)
TTO4:=VAL(TTO2)+VAL(TTO3)
IF TTO4>=100
IF TTO4<200
TTOT:=TTOT+0000400
ENDIF
ENDIF
EXIT
ENDDO
TTOT:= STRZERO(TTOT,7)
@ 14,58 GET TTOT PICT "@R 99:99:999"
READ
C:= "S"
@ 22,02 SAY "Confirma este lan‡amento? (S/N)" GET C PICT "@! A" VALID(C $ "SN")
READ
IF C = "N" .OR. LASTKEY() = 27
LIMPA22()
SET COLO TO GR+/B+
EXIT
ENDIF
SELE A
GO BOTTOM
CTDOR:=0
DO WHILE SEQUEN = 0
SKIP -1
CTDOR:=CTDOR+1
IF CTDOR >= 20
EXIT
ENDIF
ENDDO
SEQ:= SEQUEN+1
APPEND BLANK
REPLACE SEQUEN WITH SEQ
REPLACE DATA WITH DATX
REPLACE APELID WITH RLOCAL
REPLACE CODCLI WITH SFIR
REPLACE NOME WITH SNOM
REPLACE CATEGO WITH SCAT
REPLACE CDVEIC WITH SNUM
REPLACE TPISTA1 WITH TINI
REPLACE TPISTA2 WITH TFIN
REPLACE HORA WITH TTOT
REPLACE TIVPIS WITH SPIS
REPLACE AJTERC WITH SAJU
REPLACE TVIRAD WITH SVIR
REPLACE BANDEI WITH SBAN
REPLACE BANDEI1 WITH SBAN1
REPLACE TOTBAN WITH SBAN+SBAN1
REPLACE TIVPIS1 WITH SPIS1
REPLACE AJTERC1 WITH SAJU1
REPLACE TVIRAD1 WITH SVIR1
REPLACE COMPLE1 WITH COMP1
REPLACE COMPLE2 WITH COMP2
REPLACE OBSERVA WITH SOBS
ELSE
RLOCK()
SET COLO TO GR+/B
@ 14,02 GET TPISTA1 PICT "@R 99:99:999"
@ 14,31 GET TPISTA2 PICT "@R 99:99:999"
READ
IF TPISTA1="0000000"
COMP1:="NAO"
ENDIF
IF TPISTA2="0000000"
COMP2:="NAO"
ENDIF
IF COMP1="SIM"
SET COLO TO W+/B
@ 14,20 SAY COMP1
ELSE
SET COLO TO R+/B
@ 14,20 SAY COMP1
ENDIF
IF COMP2="SIM"
SET COLO TO W+/B
@ 14,48 SAY COMP2
ELSE
SET COLO TO R+/B
@ 14,48 SAY COMP2
ENDIF
TTOT:= VAL(TPISTA1)+VAL(TPISTA2)
TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
IF VAL(TTO1)=6
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=7
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=8
TTOT:=TTOT+0000400
ENDIF
IF VAL(TTO1)=9
TTOT:=TTOT+0000400
ENDIF
DO WHILE .T.
IF VAL(TTO1)=0
TTO2:=SUBSTR(TPISTA1,5,1)
TTO3:=SUBSTR(TPISTA2,5,1)
IF TTO2="0" .AND. TTO3="0"
ELSE
TTOT:=TTOT+0000400
ENDIF
EXIT
ENDIF
TTO2:=SUBSTR(TPISTA1,5,2)
TTO3:=SUBSTR(TPISTA2,5,2)
TTO4:=VAL(TTO2)+VAL(TTO3)
IF TTO4>=100
IF TTO4<200
TTOT:=TTOT+0000400
ENDIF
ENDIF
EXIT
ENDDO
TTOT:= STRZERO(TTOT,7)
@ 14,59 SAY TTOT PICT "@R 99:99:999"
TTTOT:= TTOT
@ 18,11 SAY TBAND PICT "@R 99"
@ 18,27 SAY TINVP PICT "@R 99"
@ 18,47 SAY TAJTE PICT "@R 99"
@ 18,68 SAY TVIRA PICT "@R 99"
SET COLO TO GR+/B
@ 19,05 GET BANDEI PICT "@E 99"
@ 19,13 GET BANDEI1 PICT "@E 99"
@ 19,22 GET TIVPIS PICT "@E 99"
@ 19,32 GET TIVPIS1 PICT "@E 99"
@ 19,42 GET AJTERC PICT "@E 99"
@ 19,53 GET AJTERC1 PICT "@E 99"
@ 19,63 GET TVIRAD PICT "@E 99"
@ 19,70 GET TVIRAD1 PICT "@E 99"
READ
TBANDD:=((BANDEI+BANDEI1)*(TBAND*10))+((TIVPIS+TIVPIS1)*(TINVP*10))
TBANDD:=STRZERO(TBANDD,7)
TTOT:= VAL(TTTOT)+VAL(TBANDD)
TTO1:=SUBSTR(STRZERO(TTOT,7),5,1)
DO WHILE .T.
IF VAL(TTO1)=6
TTOT:=TTOT+0000400
EXIT
ENDIF
IF VAL(TTO1)=7
TTOT:=TTOT+0000400
EXIT
ENDIF
IF VAL(TTO1)=8
TTOT:=TTOT+0000400
EXIT
ENDIF
IF VAL(TTO1)=9
TTOT:=TTOT+0000400
EXIT
ENDIF
* IF VAL(TTO1)=0
* TTO2:=SUBSTR(TPISTA1,5,1)
* TTO3:=SUBSTR(TPISTA2,5,1)
* IF TTO2="0" .AND. TTO3="0"
* ELSE
* TTOT:=TTOT+0000400
* EXIT
* ENDIF
* ENDIF
* TTO2:=SUBSTR(TPISTA1,5,2)
* TTO3:=SUBSTR(TPISTA2,5,2)
* TTO4:=VAL(TTO2)+VAL(TTO3)
* IF TTO4>=110
* TTOT:=TTOT+0000400
* ENDIF
EXIT
ENDDO
TTOT:= STRZERO(TTOT,7)
@ 14,58 GET TTOT PICT "@R 99:99:999"
READ
TBAN:=BANDEI+BANDEI1
REPLACE HORA WITH TTOT
REPLACE COMPLE1 WITH COMP1
REPLACE COMPLE2 WITH COMP2
REPLACE CATEGO WITH SCAT
REPLACE CDVEIC WITH SNUM
REPLACE TOTBAN WITH TBAN
UNLOCK
ENDIF
EXIT
ENDDO
RETURN
********************************************************
FUNC TELATEMP
SET COLO TO GR/B+
@ 05,01 SAY "---------------------------------------------------------------------------------------------------------------------"
@ 06,01 SAY "³ ³"
SET COLO TO W+/GB+
@ 06,02 SAY " T O M A D A D E T E M P O D O S C O M P E T I D O R E S "
SET COLO TO GR/B+
@ 07,01 SAY "ÃÄDATAÄÄÄÄÄÄÄÂÄCODIGOÂÄNOME DO COMPETIDORÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
@ 08,01 SAY "³ ³ ³ ³"
@ 09,01 SAY "ÃÄAPELIDOÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÂÄCARRO MODELOÄÂÄNéMEROÄÂÄCATEGORIAÄÄÄÄÄÄÄÄÄÄ´"
@ 10,01 SAY "³ ³ ³ ³ ³"
@ 11,01 SAY "ÃÄCLUBE FILIADOÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÂÄFABRIC/ANOÄÂÄEVENTOÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
@ 12,01 SAY "³ ³ ³ ³"
@ 13,01 SAY "ÃÄTEMPO PISTA 1ÄÂÄCOMPLETOUÄÂÄTEMPO PISTA 2ÄÂÄCOMPLETOUÄÂÄTEMPO TOTALÄÄÄÄ´"
@ 14,01 SAY "³ ³ ³ ³ ³ ³"
@ 15,01 SAY "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´"
@ 16,01 SAY "³ ³"
SET COLO TO W+/GB+
@ 16,02 SAY " P E N A L I D A D E S "
SET COLO TO GR/B+
@ 17,01 SAY "ÃÄBANDEIRASÄÄÄÄÄÂÄINVASÇO DE PISTAÄÄÂÄAJUDA DE TERCEIROSÄÂÄVIRADAÄÄÄÄÄÄÄÄ´"
@ 18,01 SAY "³Puni‡Æo: Seg³Puni‡Æo: Seg ³Puni‡Æo: Seg ³Puni‡Æo: Seg³"
@ 19,01 SAY "³P1: P2: ³ P1: P2: ³ P1: P2: ³ P1: P2: ³"
@ 20,01 SAY "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
*************************************************
PROCEDURE PRODUT2
SET KEY -1 TO
SAVE SCREEN TO PRODUT1
DO WHILE .T.
@ 11,07 SAY "NOME DO CLIENT:"
@ 11,22 GET SNOM
@ 24,02 SAY "Digite um nome para pesquisa..."
READ
LIMPA22()
SNOM := ALLTRIM(SNOM)
SEEK SNOM
IF EOF()
LIMPA22()
SET COLOR TO R/W
MENSAGE("Nome n„o cadastrado........!!!!")
LIMPA22()
SNOM := SPACE(40)
LOOP
ENDIF
EXIT
ENDDO
DECLARE CAMPO[6]
CAMPO[1] = "CODCLI"
CAMPO[2] = "NOMCLI"
CAMPO[3] = "APELI1"
CAMPO[4] = "CIDADE"
CAMPO[5] = "SALDOATU"
DECLARE MASC[6]
MASC[1] = "@R 9999"
MASC[2] = "@!"
MASC[3] = "@!"
MASC[4] = "@!"
MASC[5] = "@E 99,999,999.99"
DECLARE CAB[6]
CAB[1] = "C¢digo"
CAB[2] = "Nome do Cliente"
CAB[3] = "Apelido"
CAB[4] = "Cidade"
CAB[5] = "Saldo devedor"
SET COLOR TO W+/R
@ 22,02 SAY " PgUp PgDn "+CHR(24)+" "+CHR(25)+" Selecione o Cliente e Tecle[ENTER] "
SET COLOR TO GR/BR+
DBEDIT(12,20,21,76,CAMPO,"",MASC,CAB)
LIMPA22()
SNOM := NOMCLI
RESTORE SCREEN FROM PRODUT1
SET KEY -1 TO PRODUT2
SET ORDER TO 1
SET COLO TO GR/B+
RETURN
*******************************
PROCEDURE ORCAM
SAVE SCREEN TO XUXA
SELE C
GO BOTTOM
SKIP -12
SET KEY -1 TO
LIMPA22()
SET COLOR TO W/GB+
DECLARE CAMPO[6]
CAMPO[1] = "SEQUEN"
CAMPO[2] = "PRODUT"
CAMPO[3] = "QUANTI"
CAMPO[4] = "PUNIT"
CAMPO[5] = "VLTOT"
CAMPO[6] = "CODIGO"
DECLARE MASC[6]
MASC[1] = "@E 999"
MASC[2] = "@R !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
MASC[3] = "@E 9,999.999"
MASC[4] = "@E 9,999.99"
MASC[5] = "@E 99,999.99"
MASC[6] = "@!"
DECLARE CAB[6]
CAB[1] = "Item"
CAB[2] = "Nome do Produto"
CAB[3] = "Quant"
CAB[4] = "P.Unit"
CAB[5] = "Total"
CAB[6] = "Codigo"
SET COLOR TO W+/R
@ 22,02 SAY " PgUp PgDn "+CHR(24)+" "+CHR(25)+" <Enter>=Sai "
SET COLOR TO W/GB+
DBEDIT(04,01,18,78,CAMPO,"",MASC,CAB)
SET KEY -1 TO ORCAM
SET COLO TO GR/B+
REST SCREEN FROM XUXA
RETURNGilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino


