Fórum Preciso fazer uma consulta SQL mais sem passar por parametro #365479

25/10/2008

0

Pessoal, não estou conseguindo retornar nada nesta consulta SQL

var
  texto: string;
begin
  {:Primeiro passo os dados para serem filtrados no edit com mais de um nome e com espaços
  serve para filtrar tipo assim ADR SERV, JOAO DE S.... etc}
  if Trim(edtBusca.text) = ´´ then
   Exit;
   texto := AnsiUpperCase(StringReplace(TrimRight(edtBusca.text),´ ´,´¬ ´,[rfReplaceAll]))+´¬´;
   {:Aqui faço novamente o select agora passando por parametros}
   {:Obs Este select já esta cadastrado do DM com o parametro para o CDS reconheçer o parametro "ASSOCIADO"}
   with ibEmpresas do
    begin
      Close;
      CommandText := ´select distinct(a.cdempresa), ´+
                     ´    a.nmempresa,              ´+
                     ´         b.idusuario,         ´+
                     ´         b.marcarbox          ´+
                     ´ from empresa a               ´+
                     ´ left join permissoesuser b ON (a.cdempresa = b.idempresa) ´+
                     ´ where ´+
                     ´ b.idusuario = a.idusuario and  ´+
                     ´ upper(a.nmempresa) like ´+QuotedSTR(AnsiUpperCase(Texto))+
                     ´ order by nmempresa ´;
      //Params[0].AsString := AnsiUpperCase(Texto);
      Open;
      if IsEmpty then
         MessageDlg(´Não existe dados para esta pesquisa´, mtInformation, [mbOK], 0);
         Abort;
    end;    


E por parametros eu não posso passar pq esta tabela já vem filtrando outros dados e se eu incluir mais um parametro ele não traz os resultados que eu necessito.


Adriano_servitec

Adriano_servitec

Responder

Posts

25/10/2008

Adriano_servitec

Consegui resolver desta forma aqui

with ibEmpresas do
    begin     
      ibEmpresas.Filtered := False;
      if (edtBusca.Text <> ´´) then
      begin
         ibEmpresas.Filter := ´nmEmpresa=´ +QuotedStr(AnsiUpperCase(edtBusca.Text + ´*´));
         ibEmpresas.FilterOptions:=[foCaseInsensitive];
         ibEmpresas.Filtered:=true;
      end else if ibEmpresas.IsEmpty then
         MessageDlg(´Não existe dados para esta pesquisa´, mtInformation, [mbOK], 0);
         Abort;
    end;



Responder

Gostei + 0

27/10/2008

Adriano_servitec

Alias nem precisa desta linha aqui neste código, é que estava no outro do SQL, mais se tiver algum que trata a meam mensagem gostaria de saber qual colocar ai no lugar desta ai.
else if ibEmpresas.IsEmpty then
         MessageDlg(´Não existe dados para esta pesquisa´, mtInformation, [mbOK], 0);
         Abort;


Outra duvida é que estou usando no onChange do edit, e gostaria de saber como retorno todos os dados novamente quando deixar o edit limpo.

E também se possivel saber como fazer uma consulta dom mais de uma letra no dbgrid com espaços entre elas, como fiz em SQL.

Desculpe tantas perguntas, mais sempre usei SQL em vez de filter.

Grato, adriano


Responder

Gostei + 0

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

Aceitar