Datas em dbase
Autora: Sara Fichman Raskin
Validando Strings Data em Dbase III Plus ou Cliper
Se você precisa validar datas armazenadas como caracteres, este artigo pode lhe ajudar.
No dBase Plus, uma data é representada internamente como um número. Quando a função CTOD ( ) é processada, seu argumento é convertido para esse formato interno de data sem a verificação de que seja uma data válida.
Por exemplo, se você digitar
?ctod(“10/35/90”) o dBase vai retornar 11/04/90 (formato mm/dd/aa), 11/04/90.
Sabendo disso, validar um string data é simplesmente uma questão de ver o resultado da função CTOD ( ), convertê-la novamente para string data e comparar o resultado com o string data original. Se forem diferentes, a data é inválid.
Podemos fazer isso com o seguinte bloco de IF:
IF (DTOC(CTOD(dstring)) = dstring) * DATA VALIDA
ELSE
DATA INVÁLIDA
ENDIF
Com o Clipper, esta tarefa pode ser ainda mais simples, pois podemos convertê-la numa função definida pelo usuário. Por exemplo:
FUNCTION VALDATA
PARAMETERS dstring
IF (DTOC(CTOD ( m>dstring)) = m>dstring)
RETURN (.F.)
ELSE
RETURN (.F.)
ENDIF
exemplo de uso da função
IF VALDATA(dstring)
*data valida
ELSE
*DATA INVÁLIDA
ENDIF
Poderíamos simplificar a função ainda mais. Assim:
FUNCTION VALDATA PARAMETERS dstring RETURN (IFF (DTOC (CTOD (dstring)) = dstring, .T,.F.))
Daniel K. Cahoom Extraído da PC Magazine Vol. 10 N.3
Validando Strings Data em Dbase III Plus ou Cliper
Se você precisa validar datas armazenadas como caracteres, este artigo pode lhe ajudar.
No dBase Plus, uma data é representada internamente como um número. Quando a função CTOD ( ) é processada, seu argumento é convertido para esse formato interno de data sem a verificação de que seja uma data válida.
Por exemplo, se você digitar
?ctod(“10/35/90”) o dBase vai retornar 11/04/90 (formato mm/dd/aa), 11/04/90.
Sabendo disso, validar um string data é simplesmente uma questão de ver o resultado da função CTOD ( ), convertê-la novamente para string data e comparar o resultado com o string data original. Se forem diferentes, a data é inválid.
Podemos fazer isso com o seguinte bloco de IF:
IF (DTOC(CTOD(dstring)) = dstring) * DATA VALIDA
ELSE
DATA INVÁLIDA
ENDIF
Com o Clipper, esta tarefa pode ser ainda mais simples, pois podemos convertê-la numa função definida pelo usuário. Por exemplo:
FUNCTION VALDATA
PARAMETERS dstring
IF (DTOC(CTOD ( m>dstring)) = m>dstring)
RETURN (.F.)
ELSE
RETURN (.F.)
ENDIF
exemplo de uso da função
IF VALDATA(dstring)
*data valida
ELSE
*DATA INVÁLIDA
ENDIF
Poderíamos simplificar a função ainda mais. Assim:
FUNCTION VALDATA PARAMETERS dstring RETURN (IFF (DTOC (CTOD (dstring)) = dstring, .T,.F.))
Daniel K. Cahoom Extraído da PC Magazine Vol. 10 N.3