Busca no Paradox / TTable
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 !
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
Curtidas 0
Respostas
Amarildo
22/05/2006
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.
GOSTEI 0
Demian Soares
22/05/2006
vc ja tentou usar o comando locate....
GOSTEI 0
Buck
22/05/2006
não tentei usar o locate não...
como se usa ele ?
como se usa ele ?
GOSTEI 0
Jlimajr
22/05/2006
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
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
GOSTEI 0
Jlimajr
22/05/2006
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
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
GOSTEI 0
Anjinho Loiro
22/05/2006
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.
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.
GOSTEI 0
Antseralves
22/05/2006
Isso funciona com IBTable:
if IBTable1.Locate(´CampoNome;CampoData´,VarArrayOf([Nome,Data]),[]) then...
if IBTable1.Locate(´CampoNome;CampoData´,VarArrayOf([Nome,Data]),[]) then...
GOSTEI 0