Página 1 de 1
Busca em Indice
Enviado: 01 Nov 2004 14:08
por negrao
Pessoal , ve se tem como
Tenho um arquivo com os seguintes registros:
01/01/2004
15/01/2004
20/03/2004
21/03/2004
01/11/2004
Esses registros estao indexados por dada,supondo que digite a data 05/02/2004.
Nao tem nenhum registro com essa data, tem como ele posicionar no registro mais perto, ou seja, o 15/01/2004 ?
Obrigado
Enviado: 01 Nov 2004 14:27
por Toledo
Negrao,
Basta você utilizar o comando SET SOFTSEEK ON antes do comando SEEK. Com o comando SET SOFTSEEK ON se o comando SEEK não achar o registro desejado, o ponteiro é posicionado no registro lógico seguinte (20/03/2004).
Exemplo:
Código: Selecionar todos
SET SOFTSEEK ON
SEEK dData //dData = CTOD("05/02/2004")
SET SOFTSEEK OFF
Ai é só dar um SKIP -1 e retornar ao registro anterior (15/01/2004).
Abraços,
Enviado: 01 Nov 2004 18:13
por Clipper
Complementando a postagem do Toledo.
Se você preferir pode usar a função DBSEEK() ao invés do comando SEEK, neste caso não é necessário usar os comandos SET SOFTSEEK, bastando somente especificar a busca relativa na própria função, exemplo :
DBSEEK(MDATA,.T.)
// Faz a busca posicionando no superior mais próximo caso não seja encontrado um registro com chave idêntica.
DBSEEK(MDATA,.F.)
// Faz a busca retornando EOF()=.T. caso não seja encontrado um registro com chave idêntica.
EOF() = Fim de arquivo
Até logo.
Marcelo