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