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
Busca em Indice
Moderador: Moderadores
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
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:
Ai é só dar um SKIP -1 e retornar ao registro anterior (15/01/2004).
Abraços,
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 OFFAbraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
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
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

