Página 2 de 2
Tratativa de Campos
Enviado: 30 Out 2012 12:54
por Pablo César
Eolo escreveu:Vamos lá: se CAMPO é C e vc quer identificar os registros que contêm só números, é usar VAL e VALTYPE.
Mesmo assim, ainda não procede. Desculpe, mas eu testei e o resultado não é como você acha que acontece. Se fizer:
? Valtype(Val("123X4"))
? Valtype(Val("8987"))
? Valtype(Val("89x87"))
? Valtype(Val("a8987"))
O resultado sempre será: "N"
Embora não tenha ainda se falado, existe a função CHARONLY, que remove todos os caracteres menos os que estão no primeiro parâmetro. Esta função pertence a CT.LIB e existe o equivalente em Harbour também. O exemplo abaixo sintetisa o procedimento, sem varrer o conteúdo caracter por caracter:
? CHARONLY("0123456789","123X4") // "1234"
? CHARONLY("0123456789","8987") // "8987"
? CHARONLY("0123456789","89x87") // "8987"
? CHARONLY("0123456789","a8987") // "8987"
Tratativa de Campos
Enviado: 30 Out 2012 13:08
por Poka
Essa função não serviria?
Código: Selecionar todos
//////////////
FUNCT TEMLETRA(VAR)
LOCAL A,VAL:=.F.
VAR:=ALLTRIM(VAR)
//VERIFICA SE A VARIAVEL TEM ALGUMA LETRA
// SE TIVER VOLTA POSITIVO
FOR A:=1 TO LEN(VAR)
IF ASC(SUBSTR(VAR,A,1)) <48 .OR.ASC(SUBSTR(VAR,A,1)) >57 // TEM LETRA
VAL:=.T.
EXIT
ENDIF
NEXT
RETURN (VAL)
/////////
FUNCT TEMNUM(VAR)
LOCAL A,VAL:=.T.
VAR:=ALLTRIM(VAR)
//VERIFICA SE A VARIAVEL TEM ALGUM NUMERO
// SE TIVER VOLTA POSITIVO
FOR A:=1 TO LEN(VAR)
IF ASC(SUBSTR(VAR,A,1)) <48 .OR.ASC(SUBSTR(VAR,A,1)) >57
VAL:=.F.
EXIT
ENDIF
NEXT
RETURN (VAL)
Poka
Tratativa de Campos
Enviado: 30 Out 2012 16:36
por Paulo Gomes
Boa tarde!!!
As sugestões aqui postadas em muito me ajudaram para a solução do problema.
A vida é um eterno aprendizado em todos os sentidos. Aqui ficou patente o espirito colaborativo do Grupo através da boa vontade e disponibilidade em compartilhar conhecimento de forma não remunerada. Certa vez escutei o seguinte, o “EU” não é maior que o “NÓS”, pra mim isso agora ficou bem claro e com bastante sentido.
Agradeço a acolhida do Grupo e também me coloco a disposição para eventuais necessidades.
Pela atenção, obrigado.
Paulo Gomes