Re: [delphi-br] Filtro no ClientDataSet Usando LIKE
Veja . Vc pode usar esse exemplo num edit OnChange .. conforme vc vai digitando ... FrmDm.CDS_Setores.filter := 'NOME_SET LIKE ' + QuotedStr('%'+Edit1.text+'%'); FrmDm.CDS_Setores.Filtered := true; FrmDm.CDS_Setores.locate('nome_set','edit1.text',[loPartialKey]) ; ** QuotedStr(''+Edit1.text+'%') que comece com a letra ** QuotedStr('%'+Edit1.text+'%') que contenha a letra ** QuotedStr('%'+Edit1.text+''); que termine com a letra Espero ter ajudado ! Luciano Angelini PM de Lupionópolis-Pr Gilvan Costa escreveu: Olá Srs Estou querendo montar um filtro com ClietDataSet de forma que ele me traga os registro de todos que começa com a letra A por exemplo . Tipo o que eu faço com no SQL: CDSPesquisa.Params.ParamByName('Pesquisa').Value := '%'+ Pesquisa +'%'; O objetivo é claro, uma vez que eu já tenho os dados no grid, gostaria de fazer diversos filtros e não mais precisar ir no banco de dados e fazer uma nova consulta. Tentei montar o filtro usando LIKE mais não deu certo: CDSPesquisa.Filtered := False; CDSPesquisa.Filter := 'Meu Campo Like '+ QuotedStr('%' + BtePesquisar Text + '%' ); CDSPesquisa.Filtered := True; Assim deu certo, mas só funcionar para um valor completo CDSPesquisa.Filter := 'Meu Campo = ' + QuotedStr(BtePesquisar.Text); [As partes desta mensagem que não continham texto foram removidas] avast! Antivirus http://www.avast.com: Inbound message clean. Virus Database (VPS): 091108-1, 08/11/2009 Tested on: 11/9/ 09:18:35 avast! - copyright (c) 1988-2009 ALWIL Software. --- avast! Antivirus: Outbound message clean. Virus Database (VPS): 091108-1, 08/11/2009 Tested on: 11/9/ 09:35:08 avast! - copyright (c) 1988-2009 ALWIL Software. http://www.avast.com -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] Filtro no ClientDataSet Usando LIKE - RESOLVIDO
Testei o código abaixo no delphi 2010 e funcionou, como meu projeto ainda é apenas um protótipo, vou seguir no delphi 2010 mesmo CDSPesquisa.Filtered := False; CDSPesquisa.Filter:= 'NOME_NO_SISTEMA LIKE ' + QuotedS('% +BtePesquisar.Text+'%'); CDSPesquisa.Filtered := True; Usando: FilterOptions := [foCaseInsensitive] Nota: Eu estava testando no delphi 2009, não sei a causa de não ter funcionado, deve ser algum detalhe que me escapou :-) Valeu, vamos em frente ---Original Message--- From: Luciano Angelini Date: 11/09/09 09:35:24 To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Filtro no ClientDataSet Usando LIKE Veja . Vc pode usar esse exemplo num edit OnChange .. conforme vc vai digitando ... FrmDm.CDS_Setores.filter := 'NOME_SET LIKE ' + QuotedStr('%'+Edit1.text+'%'); FrmDm.CDS_Setores.Filtered := true; FrmDm.CDS_Setores.locate('nome_set','edit1.text',[loPartialKey]) ; ** QuotedStr(''+Edit1.text+'%') que comece com a letra ** QuotedStr('%'+Edit1.text+'%') que contenha a letra ** QuotedStr('%'+Edit1.text+''); que termine com a letra Espero ter ajudado ! Luciano Angelini PM de Lupionópolis-Pr Gilvan Costa escreveu: Olá Srs Estou querendo montar um filtro com ClietDataSet de forma que ele me traga os registro de todos que começa com a letra A por exemplo . Tipo o que eu faço com no SQL: CDSPesquisa.Params.ParamByName('Pesquisa').Value := '%'+ Pesquisa +'%'; O objetivo é claro, uma vez que eu já tenho os dados no grid, gostaria de fazer diversos filtros e não mais precisar ir no banco de dados e fazer uma nova consulta. Tentei montar o filtro usando LIKE mais não deu certo: CDSPesquisa.Filtered := False; CDSPesquisa.Filter := 'Meu Campo Like '+ QuotedStr('%' + BtePesquisar Text + '%' ); CDSPesquisa.Filtered := True; Assim deu certo, mas só funcionar para um valor completo CDSPesquisa.Filter := 'Meu Campo = ' + QuotedStr(BtePesquisar.Text); [As partes desta mensagem que não continham texto foram removidas] avast! Antivirus http://www.avast.com: Inbound message clean. Virus Database (VPS): 091108-1, 08/11/2009 Tested on: 11/9/ 09:18:35 avast! - copyright (c) 1988-2009 ALWIL Software. --- avast! Antivirus: Outbound message clean. Virus Database (VPS): 091108-1, 08/11/2009 Tested on: 11/9/ 09:35:08 avast! - copyright (c) 1988-2009 ALWIL Software. http://www.avast.com -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Filtro no ClientDataSet Usando LIKE
Olá Gilvan, Não sei se voce testou, mas tem uma outra forma de comparar partes de string segundo o help * State = 'M*' Wildcard for partial comparisons Talvez assim funcione, este é meu palpite hehehe :D abraço Marcos Bernardo 2009/11/7 Gilvan Costa info...@yahoo.com.br Olá Srs Estou querendo montar um filtro com ClietDataSet de forma que ele me traga os registro de todos que começa com a letra A por exemplo . Tipo o que eu faço com no SQL: CDSPesquisa.Params.ParamByName('Pesquisa').Value := '%'+ Pesquisa +'%'; O objetivo é claro, uma vez que eu já tenho os dados no grid, gostaria de fazer diversos filtros e não mais precisar ir no banco de dados e fazer uma nova consulta. Tentei montar o filtro usando LIKE mais não deu certo: CDSPesquisa.Filtered := False; CDSPesquisa.Filter := 'Meu Campo Like '+ QuotedStr('%' + BtePesquisar Text + '%' ); CDSPesquisa.Filtered := True; Assim deu certo, mas só funcionar para um valor completo CDSPesquisa.Filter := 'Meu Campo = ' + QuotedStr(BtePesquisar.Text); [As partes desta mensagem que não continham texto foram removidas] -- Marcos A. de A. Bernardo xmarcos@gmail.com 11 - 9462-2657 / 11- 3205-1499 http://bagusconsultoria.wordpress.com/ [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] Filtro no ClientDataSet Usando LIKE
Marcos, Realmente desta forma funciona, porém, eu preciso de algo a mas, e não fica limitado fazendo o filtro e tendo que informar o valor inicial do campo, Eu preciso que o retorno do FILTRO seja qualquer informação parcial do campo, tipo o que nós usamos nas consultas SQL: Where Campo LIke %valor do campo% Nota: o tipo do campo é varchar(200) Já pesquisei na net e vi vários exemplos de uso do LIKE nos filtros usando clietdataset, mas acho que não funciona no Delphi 2009 e o que é pior ele não reconhecer o % como caracter coringa. Por isso preciso elucidar essa questão para construir o modelo de pesquisa do Dbgrid. ---Original Message--- From: Marcos Bernardo Date: 08/11/2009 14:17:27 To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] Filtro no ClientDataSet Usando LIKE Olá Gilvan, Não sei se voce testou, mas tem uma outra forma de comparar partes de string segundo o help * State = 'M*' Wildcard for partial comparisons Talvez assim funcione, este é meu palpite hehehe :D abraço Marcos Bernardo 2009/11/7 Gilvan Costa info...@yahoo.com.br Olá Srs Estou querendo montar um filtro com ClietDataSet de forma que ele me traga os registro de todos que começa com a letra A por exemplo . Tipo o que eu faço com no SQL: CDSPesquisa.Params.ParamByName('Pesquisa').Value := '%'+ Pesquisa +'%'; O objetivo é claro, uma vez que eu já tenho os dados no grid, gostaria de fazer diversos filtros e não mais precisar ir no banco de dados e fazer uma nova consulta. Tentei montar o filtro usando LIKE mais não deu certo: CDSPesquisa.Filtered := False; CDSPesquisa.Filter := 'Meu Campo Like '+ QuotedStr('%' + BtePesquisar Text + '%' ); CDSPesquisa.Filtered := True; Assim deu certo, mas só funcionar para um valor completo CDSPesquisa.Filter := 'Meu Campo = ' + QuotedStr(BtePesquisar.Text); [As partes desta mensagem que não continham texto foram removidas] -- Marcos A. de A. Bernardo xmarcos@gmail.com 11 - 9462-2657 / 11- 3205-1499 http://bagusconsultoria.wordpress.com/ [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas]