Formatacao de GET com zeros para esquerda ME AJUDEM!!!!

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Iwasa
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 16 Ago 2007 08:27
Localização: PRES. PRUDENTE SP
Contato:

Formatacao de GET com zeros para esquerda ME AJUDEM!!!!

Mensagem por Iwasa »

Olá pessoal sou novato aqui no fórum
Estou tentando fazer com que um GET de campo código seja formatado automaticamente retornando zeros para esquerda com uma funcao no VALID, mas nao estou conseguindo, dá um erro de STR ou nao formata.

Além do sistema já aparecer com um numero de codigo mais alto já cadastrado, eu preciso retornar nesse campo se tiver algum codigo vago abaixo do já apresentado o que acontece que a variavel já foi formatado para texto e me retorna o erro de STR e o programa aborta,
usando esse comando de formatacao no Valid EVAL( { || vCODECLI:=STRZERO(vCODECLI,5), .T.})

Agora com a PROCEDURE CODEZERO que criei nao formata automaticamente quando digito um numero qualquer ou seja nao preenche zeros para a esquerda.

Gostaria de saber se tem algum colega mais experiente para me ajudar.

Estou disponibilizando o codigo para que possam me ajudar...

//---------- " TELA DE EDICAO /INCLUSAO / ALTERACAO E CONSULTA "
FUNCTION EDICAO

SET SCOREBOARD OFF // DESLIGA MENSAGEMS DO COMANDO READ
SET DELIMITERS TO "[]" // CARACTERES DELIMITADORES DE CAMPO
SET DELIMITERS OFF // ATIVA DELIMITADORES DE CAMPO

USE CLIENTES ALIAS CLTS
SET INDEX TO CLI00001
GO BOTTOM

// oTELA:=SAVESCREEN(00,00,25,80)

vOLDCOLOR:=SETCOLOR()

BOXSCREEN(03,03,21,78,1,cCOLOR5,"CADASTRO DE CLIENTES")


PRIVATE ;
vCODECLI := CLTS -> CODECLI , ;
vRZSOCIAL :=SPACE(50) , ;
vENDERECO :=SPACE(40) , ;
vBAIRRO :=SPACE(40) , ;
vCIDADE :=SPACE(30) , ;
vUF :=SPACE(02) , ;
vCPF :=SPACE(14) , ;
vCNPJ :=SPACE(18) , ;
vINSEST :=SPACE(17) , ;
vFONE :=SPACE(15) , ;
vCONTATO :=SPACE(20) , ;
vPERCENT :=0 , ;
vCODECOB :=SPACE(05) , ;
vCODEPRA :=SPACE(05) , ;
vCADASTRO :=DATE() , ;
vENCERRADO :=CTOD(" / / "), ;
vMSG[16]



vMSG[1] := "CODIGO__________:"
vMSG[2] := "NOME____________:"
vMSG[3] := "ENDERECO________:"
vMSG[4] := "BAIRRO__________:"
vMSG[5] := "CIDADE__________:"
vMSG[6] := "UF______________:"
vMSG[7] := "CPF_____________:"
vMSG[8] := "CNPJ/CGC________:"
vMSG[9] := "INS. ESTADUAL___:"
vMSG[10] := "FONE____________:"
vMSG[11] := "CONTATO_________:"
vMSG[12] := "PERCENTUAL %____:"
vMSG[13] := "CODIGO COBRADOR_:"
vMSG[14] := "CODIGO PRACA____:"
vMSG[15] := "CADASTRADO EM___:"
vMSG[16] := "ENCERRAMENTO____:"


nCOL := 5 // posicionamento do menu (prompt)

nCHAR:=ARRAY(LEN(vMSG)) // posicao de inicio do menu
nARRAY:=LEN(vMSG) // conta matriz
FOR i = 1 TO nARRAY // le todo conteudo da matriz
nCHAR := LEN(vMSG)+nCOL
NEXT

@ 04,05 SAY vMSG[1]
@ 05,05 SAY vMSG[2]
@ 07,05 SAY vMSG[3]
@ 08,05 SAY vMSG[4]
@ 09,05 SAY vMSG[5]
@ 10,05 SAY vMSG[6]
@ 11,05 SAY vMSG[7]
@ 12,05 SAY vMSG[8]
@ 13,05 SAY vMSG[9]
@ 14,05 SAY vMSG[10]
@ 15,05 SAY vMSG[11]
@ 16,05 SAY vMSG[12]
@ 17,05 SAY vMSG[13]
@ 18,05 SAY vMSG[14]
@ 19,05 SAY vMSG[15]
@ 20,05 SAY vMSG[16]


vCODECLI:=VAL(vCODECLI)+1
vCODECLI:=STRZERO(vCODECLI,5)

@ 04,nCHAR[1] GET vCODECLI PICTURE "@K 99999" VALID CODEZERO(vCODECLI)

@ 05,nCHAR[2] GET vRZSOCIAL PICTURE "@!" VALID vRZSOCIAL # SPACE(50)
@ 07,nCHAR[3] GET vENDERECO PICTURE "@!"
@ 08,nCHAR[4] GET vBAIRRO PICTURE "@!"
@ 09,nCHAR[5] GET vCIDADE PICTURE "@!"
@ 10,nCHAR[6] GET vUF PICTURE "@!"

@ 11,nCHAR[7] GET vCPF PICTURE "@R 999.999.999-99" VALID CPFCHK(vCPF)
@ 12,nCHAR[8] GET vCNPJ PICTURE "@R 99.999.999/9999-99" valid CNPJCHK(vCNPJ)

@ 13,nCHAR[9] GET vINSEST PICTURE "@!"
@ 14,nCHAR[10] GET vFONE
@ 15,nCHAR[11] GET vCONTATO PICTURE "@!"
@ 16,nCHAR[12] GET vPERCENT PICTURE "@B 999.99" VALID vPERCENT<=100 .and. !empty(vPERCENT)
@ 17,nCHAR[13] GET vCODECOB
@ 18,nCHAR[14] GET vCODEPRA
@ 19,nCHAR[15] GET vCADASTRO
@ 20,nCHAR[16] GET vENCERRADO


READ
SN:={"SIM", "NAO"}

OPC:=ALERT("CADASTRAR CLIENTE", SN)
IF OPC==1

APPEND BLANK
CLTS -> CODECLI := vCODECLI
CLTS -> RZSOCIAL := vRZSOCIAL
CLTS -> ENDERECO := vENDERECO
CLTS -> BAIRRO := vBAIRRO
CLTS -> CIDADE := vCIDADE
CLTS -> UF := vUF
CLTS -> CPF := vCPF
CLTS -> CNPJ := vCNPJ
CLTS -> INSEST := vINSEST
CLTS -> FONE := vFONE
CLTS -> CONTATO := vCONTATO
CLTS -> PERCENT := vPERCENT
CLTS -> CODECOB := vCODECOB
CLTS -> CODEPRA := vCODEPRA
CLTS -> CADASTRO := vCADASTRO
CLTS -> ENCERRADO := vENCERRADO


ENDIF

OPC:=ALERT("CADASTRAR MAIS CLIENTES?", SN)

IF OPC==1
RETURN EDICAO()
ENDIF


SETCOLOR(vOLDCOLOR)
RESTSCREEN(00,00,25,80,oTELA)

RETURN MCAD10101()



//---------> PREENCHE ZEROS AA ESQUERDA DO CODIGO
FUNCTION CODEZERO(WVAR)
IF VALTYPE(WVAR)=="C"
WVAR:=VAL(WVAR)
WVAR:=STRZERO(WVAR,5)
ENDIF

SEEK WVAR

IF FOUND()
ALERT("CADASTRO J'A EXISTE")
vTRUE:=.F.
ELSE
vTRUE:=.T.
ENDIF
RETURN vTRUE


AGRADEÇO SE ALGUÉM PUDER ME DAR UMA LUZ
DESDE JAH OBRIGADO :)Pos
CLIPPER 5.3b/BLINKER 7.0/RDD CDX => Migrando para HARBOUR/RDD CDX

"Podemos construir um mundo melhor, compartilhando informações. Compartilhar conhecimento é edificar um mundo melhor para todos!".

http://iwasa.4shared.com/
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

Tente isso:

@ 04,nCHAR[1] GET vCODECLI PICTURE "@K 99999" VALID CODEZERO(@vCODECLI)


Faltou o @ da vCODECLI.
Iwasa
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 16 Ago 2007 08:27
Localização: PRES. PRUDENTE SP
Contato:

OBRIGADUUUUUUUUUUU

Mensagem por Iwasa »

Caro Ademir,

Muito obrigado, valeu mesmo! Conseguiu resolver meu maior problema com um simples @.
Tentei de várias maneiras, pesquisei várias funções e nao obtive sucesso.
Um FORTE ABRAÇO.
PS.: No que puder ajudar só dar um toque, sempre vou estar participando do FÓRUM.
:)) :)) :{ :)Pos
CLIPPER 5.3b/BLINKER 7.0/RDD CDX => Migrando para HARBOUR/RDD CDX

"Podemos construir um mundo melhor, compartilhando informações. Compartilhar conhecimento é edificar um mundo melhor para todos!".

http://iwasa.4shared.com/
Responder