Fórum Pegar só certos dados pra colocar um dbgrid mesmo! #225143

10/04/2004

0

Olá pessoal,
com um table1 e um datasource1 fiz listar dados da tabela em um DBGrid1.
Pois bem, agora para tipo fazer um find no onchange de um edit1 eu coloquei o seguinte:

table1.Locate(´CLIENTE´,RxLookupEdit1.Text,[loPartialKey,loCaseInsensitive]);

Ok, mas agora para inves de selecionar lá no dbgrid1 o cliente mais próximo do inicio, como poderia
fazer para que fossem exibidos apenas os nomes que tem no dbgrid que venham cendo semelhantes ás iniciais
do q esta sendo digitado no Edit1?
Tipo ao digitar: ´Rafa´ iria aparecer Rafael Lima, Rafael Lippert, etc... apenas. E sabendo que haveria os
mesmos nomes repetidos nessa tabela, e faze-lo listaros seus repetidos tb!

Eu já pensei em fazer um while no dbgrid pra ir verificando linha por linha quais são iguais e/ou ir passando para um list, mas isso seria
loucura pq a lista é gigantesca no banco de dados,.

Valeu


Lipsil

Lipsil

Responder

Posts

10/04/2004

Marco Salles

Não Sei Se Entendi Direito, mas acho que [b:6d126f67c4]primeiro voce deve agrupar sua tabela por nome(usando um indexador)..[/b:6d126f67c4]segundo voce deve usar a instrução :
findnearest([Edit1.Text]) ;//Pesquisa Aproximada..

Não Esqueça De Indexar:
Table1.indexfieldName:=´NOMEDOCAMPO´ OU Table1.IndexName:=´IAPELIDODOCAMPOINDEXADO´;



Responder

Gostei + 0

10/04/2004

Lipsil

Kra, acho q não é isso mesmo, a não ser q eu não soube fazer certo...
mas o q eu queria era q fossem impressos no dbgrid apenas os arquivos semelhantes a um nome digitado no edit1.

exemplo: ao digitar Rafa, apareceria todos os Rafas da lista, Rafael, Rafaela, outros Rafael tb, e assim vai...
como seria aí?


Responder

Gostei + 0

10/04/2004

Edilcimar

veja a função setrangestart, setrangeend


Responder

Gostei + 0

10/04/2004

Lipsil

kra, obrigao, mas não entendi não, tentei mas não deu certo aplicar isso, como seria?


Responder

Gostei + 0

11/04/2004

Marco Salles

Agora Estou Começando a entender :P ...Caso a Função Que o Edilcimar lhe Enviou :
veja a função setrangestart, setrangeend
, Voce Não Tenha Conseguido, Pode De Maneira Paleativa Escrever o Código abaixo no evento onchange do edit1.text..Tente isto:
procedure TForm1.Edit1Change(Sender: TObject);
begin
query1.sql.Clear;
Query1.SQL.add(´Select *From Country´);
Query1.Sql.Add(´Where Name>=:NomeInicial´);
Query1.ParamByName(´NomeInicial´).AsString:=Edit1.Text;
Query1.Sql.Add(´and Name<=:NomeFinal´);
Query1.ParamByName(´NomeFinal´).AsString:=Edit1.Text+´zzzzzz´;
Query1.Prepare;
query1.open;
end;



Responder

Gostei + 0

11/04/2004

Lipsil

Valeu kra, é isso mesmo, pelo jeito esse teu aí organiza as coisas de acordo com uma palavra, mas como q faço pra ficar exibindoo apenas no DBGrid1 as palavras variaveis dá q já foi digitada?
query1.sql.Clear; 
Query1.SQL.add(´Select * From RECEBER´); 
Query1.Sql.Add(´Where NOMECLI>=:vamos´); 
Query1.ParamByName(´vamos´).AsString:=Edit1.Text; 
Query1.Sql.Add(´and NOMECLI<=:viemos´); 
Query1.ParamByName(´viemos´).AsString:=Edit1.Text+´zzzzzz´; 
Query1.Prepare; 
query1.open;
ok, esse é o cód.
num onchange do edit1.text . Bem, e eu queria q no dbgrid1 que há no mesmo form, q fossem mostrados as linhas pela ordem referente á coluna NOMECLI q essa seria organizada por sua semelhança do escrito no edit1, tipo ao digitar Marco iria aparecer Marco, Marcos, Marconi, etc, mas não apareceria Rafael, Bruno, etc... Entendeu?

Tipo o teu cód parece q é por aí mesmo, mas não sei kra.... como seria?


Responder

Gostei + 0

11/04/2004

Marco Salles

Eu Acho Que o Código Anterior Que Eu Escrevi , Deve Funcionar, Mas Talves Esta Faltando é :idea: [b:b736506010]Ordenar Sua Tabela Pelo Nome[/b:b736506010].. Porque a Pesquisa Seleciona os Nomes Mas se Seu Banco Tiver Bagunçado o Retorno Também Sera Da Mesma Forma :cry: ...Tente adicionar a Istrução [b:b736506010]Order By [/b:b736506010]Abaixo e nos Retorne o Resultado:
query1.sql.Clear; 
Query1.SQL.add(´Select * From RECEBER´); 
Query1.Sql.Add(´Where NOMECLI>=:vamos´); 
Query1.ParamByName(´vamos´).AsString:=Edit1.Text; 
Query1.Sql.Add(´and NOMECLI<=:viemos´); 
Query1.ParamByName(´viemos´).AsString:=Edit1.Text+´zzzzzz´; 
Query1.SQL.add(´Order By Capital´);
Query1.Prepare; 
query1.open;



Responder

Gostei + 0

16/04/2004

Lipsil

valew kra, funcionou direitinho desde o principio, o problema era minha falta de atenção em não perceber q era uma table q estava setada no datasource e não a query.. heheh..

valew mesmo!!


Responder

Gostei + 0

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

Aceitar