Duvida sobre Seek

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
marbio
Usuário Nível 3
Usuário Nível 3
Mensagens: 206
Registrado em: 29 Jul 2004 16:26

Duvida sobre Seek

Mensagem por marbio »

Bom dia,

Verifiquei no forum a respeito do seek com pesquisa de dois campos mas nao me atendeu.

obs: os campos so numericos

fiz desta forna mas nao funcionou

use carne
index on carne+ano to carne003


use carne index carne003



seek carne+ano



ele acha outro registro

o q pode estar de errado.


eu queira quando nao fazia a condicao registro nao encontrato


desde ja agradeco sua atençao.
Editado pela última vez por marbio em 30 Jan 2008 11:20, em um total de 1 vez.
Sempre há uma solucao para os nossos problema clipper.....
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Depende do conteúdo e da forma como você pesquisa. A chave é formada por uma string que é a soma de duas: carnê e ano. O ano, imagino, seja YYYY. Mas e o carnê?
Se na identificação do carnê existem letras, por exemplo, o ideal seria usar um Upper() na criação da chave do índice. Na pesquisa, usa-se Upper() também. Quais os conteúdos dos campos? Dê um exemplo prático.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Dércio_Luiz_Zanatta
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 11 Jan 2006 15:37
Localização: Ibirubá - RS

Mensagem por Dércio_Luiz_Zanatta »

Quando indexa, cria assim:
index on str(carne,10)+str(ano,4)
// 10 é somente um exemplo...

na hora de pesquisar faça o mesmo, ou seja..
Seek Str(Vcarne,10)+Str(vano,4)

Um abraço...
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Código: Selecionar todos

obs: os campos so numericos

fiz desta forna mas nao funcionou

use carne
index on carne+ano to carne003


use carne index carne003



seek carne+ano 
Elementar meus caros Marbio e Dércio, o que está acontecendo é que o sistema está somando carne+ano // 1245+2007 = 3252
Faça como postou nosso amigo Dércio. Transforme em strings.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Não tão elementar assim. O ideal seria como strings, pois facilita o trabalho, de certa forma. Mas mesmo sendo os campos numéricos, também poderia dar muito certo. Só depende do valor que se atribui a cada carnê. Ou, alternativamente, e supondo que os carnês são numerados em seqüência simples (1,2,3,...), bastaria uma multiplicação pra resolver o caso. Então a chave de índice poderia ser algo do tipo (CARNE*10000)+ANO. A busca, claro, deverá seguir o mesmo padrão.

Aliás, diga-se de passagem: a indexação por números é mais rápida do que por strings.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Então a chave de índice poderia ser algo do tipo (CARNE*10000)+ANO. A busca, claro, deverá seguir o mesmo padrão.
Interessante !!!
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder