Fórum Busca no Paradox / TTable #321881

22/05/2006

0

Olá, é o seguinte:

Preciso fazer uma busca num sistema em Delphi. Estou usando componentes Table, e o banco esta no Paradox.
Mas detalhe, não dá pra usar o FindKey, pois não posso mudar o INDEX NAME, pois a TABLE está relacionada com outra, se mudo o Index, somem os registros. Então, recaptulando...:
preciso fazer uma busca em um campo que não é o Index.

Aguardo Ajuda...
Muti obrigado !


Buck

Buck

Responder

Posts

23/05/2006

Amarildo

Ola, Buck, para solucionar seu problema voce tera que ir no database desktop do delphi, file/open table/e abrir a tabela pela qual deseja, e ir em tools/utitlites/reestruture/ir em table propriedades/secundary index/define/field(voce ira selecionaro o campo da table que deseja que ocorra a chave no momento do findkey/apos selecionar o campo/tecle na setinha que esta acima, que estará jogando para o campo da direita/apos feito isso/tecle em ok/ira abrir uma janela onde voce terá que identificar esta chave secundaria, que estará visualizando na table dendo do seu programa, depois pelo seu programa na table identificar a chave que deseja que o findkey procure. Felicidades e sucesso.


Responder

Gostei + 0

23/05/2006

Demian Soares

vc ja tentou usar o comando locate....


Responder

Gostei + 0

23/05/2006

Buck

não tentei usar o locate não...
como se usa ele ?


Responder

Gostei + 0

23/05/2006

Jlimajr

O locate é + ou - assim que se usa

if not tabela.LOCATE(´campo´,EDIT1.TEXT,[]) then
begin
SHOWMESSAGE(´Coloque sua mensagem aqui!´);
edit1.text:=´´; // limpa o edit
edit1.SetFocus; //caso naum localize retorna ao edit
end else
edit2.setfocus;
end;

Fora a opçao dentro do [ ]
[LoCaseInsensitive] e [LopartialKey]
Opção de pesquisa que pode ser loPartialKey que representa pesquisa parcial como loCaseInsensitive que diferencia letras Maiúsculas de Minúsculas.


Outra alternativa usando table é fazer filtro neste caso pode usar o LIKE

DM.tabela.filtered := false;
DM.tabela.filter := ´campo LIKE ´+quotedstr(edit1.Text+´¬´);
DM.tabela.filtered := true;


Agora se quiser usar Query vc pode fazer os comando usando o SQL com o select

Query1.Close;
Query1.SQL.Text:=´SELECT campo from tabela where ´+ ´campo like :pnome ORDER BY campo´;
Query1.ParamByName(´pnome´).Value:=Edit1.Text+´¬´;
Query1.Open;

Essa aqui usei parametro mais vc pode usar direto com o QuotedSTR

Tem muitas outras maneiras de pesquisa, filtros etc pesquise sobre o LIKE ele é muito bom para certas pesquisas inclusive pode se usar de varias formas


Responder

Gostei + 0

23/05/2006

Jlimajr

O locate é + ou - assim que se usa

if not tabela.LOCATE(´campo´,EDIT1.TEXT,[]) then
begin
SHOWMESSAGE(´Coloque sua mensagem aqui!´);
edit1.text:=´´; // limpa o edit
edit1.SetFocus; //caso naum localize retorna ao edit
end else
edit2.setfocus;
end;

Fora a opçao dentro do [ ]
[LoCaseInsensitive] e [LopartialKey]
Opção de pesquisa que pode ser loPartialKey que representa pesquisa parcial como loCaseInsensitive que diferencia letras Maiúsculas de Minúsculas.


Outra alternativa usando table é fazer filtro neste caso pode usar o LIKE

DM.tabela.filtered := false;
DM.tabela.filter := ´campo LIKE ´+quotedstr(edit1.Text+´¬´);
DM.tabela.filtered := true;


Agora se quiser usar Query vc pode fazer os comando usando o SQL com o select

Query1.Close;
Query1.SQL.Text:=´SELECT campo from tabela where ´+ ´campo like :pnome ORDER BY campo´;
Query1.ParamByName(´pnome´).Value:=Edit1.Text+´¬´;
Query1.Open;

Essa aqui usei parametro mais vc pode usar direto com o QuotedSTR

Tem muitas outras maneiras de pesquisa, filtros etc pesquise sobre o LIKE ele é muito bom para certas pesquisas inclusive pode se usar de varias formas


Responder

Gostei + 0

22/10/2006

Anjinho Loiro

Como posso utilizar o locate para encontrar um cliente pelo nome e pela data de cadastro....?

Como por exemplo, existem vários ´João da Silva´, mas só me interessa localizar o que foi cadastrado em 15/08/2006.

Espero que vc possa me ajudar.

Beijinhos.


Responder

Gostei + 0

22/10/2006

Antseralves

Isso funciona com IBTable:

if IBTable1.Locate(´CampoNome;CampoData´,VarArrayOf([Nome,Data]),[]) then...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar