Ir ao conteúdo
  • Cadastre-se

Leonardo Andrade

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Resolvido!!! Pesquisa dinâmica em Delphi com 3 Edits, dbGrid, adotable e banco Acess, utilizando operador LIKE. para quem interessar segue os códigos: procedure Tfrm_consulta.fcbox_categoriaChange(Sender: TObject); var cont: Integer; Filtro, Soma_Filtro: String; begin Filtro := ''; Soma_Filtro := ''; cont := 0; //no evento onChange do edit1 (fcbox_categoria) //para os demais edits inverter a ordem do if: começa essa linha por edit2 (fedit_autor) e assim sucessivamente if (fcbox_categoria.Text <> '') then begin cont := cont + 1; if cont = 1 then begin Filtro := ' CATEGORIA LIKE '+ QuotedStr('%'+fcbox_categoria.Text+'%'); Soma_Filtro := Soma_filtro + Filtro; end else begin Filtro := ' AND CATEGORIA LIKE '+ QuotedStr('%'+fcbox_categoria.Text+'%'); Soma_Filtro := Soma_Filtro + Filtro; end; end; begin if (fedit_autor.Text <> '') then begin cont := cont + 1; if cont = 1 then begin Filtro := ' AUTOR LIKE '+ QuotedStr('%'+fedit_autor.Text+'%'); Soma_Filtro := Soma_Filtro + Filtro; end else begin Filtro := ' AND AUTOR LIKE '+ QuotedStr('%'+fedit_autor.Text+'%'); Soma_Filtro := Soma_Filtro + Filtro; end; end; begin if (fedit_pesquisar.Text <> '') then begin cont := cont + 1; if cont = 1 then begin Filtro := ' PROBLEMA LIKE '+ QuotedStr('%'+fedit_pesquisar.Text+'%'); Soma_Filtro := Soma_Filtro + Filtro; end else begin Filtro := ' AND PROBLEMA LIKE '+ QuotedStr('%'+fedit_pesquisar.Text+'%'); Soma_Filtro := Soma_Filtro + Filtro; end; end; dm_egestor.adotable_bancodedados.Filter := Soma_Filtro; end; end; end; end. (a pesquisa é construída a medida que o usuário for preenchendo. Permite pesquisar em 1 ou N edits)
  2. Opa, eai pessoal! Tô tendo uns problemas com minha aplicação. Não estou conseguindo aplicar SQL abaixo na query da minha aplicação delphi. Quando rodo "SELECT * FROM BANCODEDADOS WHERE PROBLEMA LIKE '%casa%' AND PROBLEMA LIKE '%amarela%' " no SQL Server, o resultado é o esperado: mostra todos resultados que contenham ambas as palavras, independente da ordem que as escrevo, ou seja: TABELA: BANCODEDADOS CAMPO: |PROBLEMA | |casa amarela| VALORES |amarela casa| VALORES o problema é que não estou conseguindo fazer o mesmo no delphi ao digitar os valores em um edit (fedit_pesquisar) Evento on change: dm_egestor.adoquery_egestor.Close; dm_egestor.adoquery_egestor.SQL.Clear; dm_egestor.adoquery_egestor.SQL.Add('SELECT * FROM BANCODEDADOS WHERE PROBLEMA LIKE '+ QuotedStr('%'+fedit_pesquisar.Text+'%')+' AND PROBLEMA LIKE '+ QuotedStr('%'+fedit_pesquisar.Text+'%')+''); dm_egestor.adoquery_egestor.Open; O resultado no meu dbgrid deveria ser todos os resultados que contenha as palavras digitadas pelo usuário no edit, independente da ordem. Fiz utilizando o FILTER também (porém sem sucesso): //if fedit_pesquisar.Text = '' then //dm_egestor.adoquery_egestor.Filtered := False //else begin //dm_egestor.adoquery_egestor.Filter := 'PROBLEMA LIKE ' + QuotedStr('*'+ fedit_pesquisar.Text +'*') + ' AND ' + 'PROBLEMA LIKE ' + QuotedStr('*'+ fedit_pesquisar.Text +'*'); //dm_egestor.adoquery_egestor.Filtered := True; //end;

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...