Pegar só certos dados pra colocar um dbgrid mesmo!
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
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
Curtidas 0
Respostas
Marco Salles
10/04/2004
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 :
Não Esqueça De Indexar:
findnearest([Edit1.Text]) ;//Pesquisa Aproximada..
Não Esqueça De Indexar:
Table1.indexfieldName:=´NOMEDOCAMPO´ OU Table1.IndexName:=´IAPELIDODOCAMPOINDEXADO´;
GOSTEI 0
Lipsil
10/04/2004
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í?
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í?
GOSTEI 0
Edilcimar
10/04/2004
veja a função setrangestart, setrangeend
GOSTEI 0
Lipsil
10/04/2004
kra, obrigao, mas não entendi não, tentei mas não deu certo aplicar isso, como seria?
GOSTEI 0
Marco Salles
10/04/2004
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;
GOSTEI 0
Lipsil
10/04/2004
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?
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?
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;
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?
GOSTEI 0
Marco Salles
10/04/2004
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;
GOSTEI 0
Lipsil
10/04/2004
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!!
valew mesmo!!
GOSTEI 0