ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

locate e resultad em dbgrid

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
kakarlos
Experiente
Experiente


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 420

MensagemEnviada: Qua Out 26, 2011 9:45 pm    Assunto: locate e resultad em dbgrid Responder com Citação

ola.. tenho um codigo em um botao e este botao faz um locate no bando de dados e mostra o resultado em uma dbgrid.. mas codigo que estou usando mostra apenas os resultados exatos.. eu gostaria q mostrasse parcial.. tipo se digitar "a" no edit iriar aparecer na dbgrid todos que começam com a letra "a"..
Código:
 if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;



alguem pode me ajudar
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Out 26, 2011 10:24 pm    Assunto: Re: locate e resultad em dbgrid Responder com Citação

kakarlos escreveu:
ola.. tenho um codigo em um botao e este botao faz um locate no bando de dados e mostra o resultado em uma dbgrid.. mas codigo que estou usando mostra apenas os resultados exatos.. eu gostaria q mostrasse parcial.. tipo se digitar "a" no edit iriar aparecer na dbgrid todos que começam com a letra "a"..
Código:
 if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;



alguem pode me ajudar


Não sei se vai funcionar ai, mais tente fazer igual ao exemplo abaixo, mudando para seu campo ai e componente.

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '*'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
kakarlos
Experiente
Experiente


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 420

MensagemEnviada: Qui Out 27, 2011 6:46 pm    Assunto: Re: locate e resultad em dbgrid Responder com Citação

adriano_servitec escreveu:
kakarlos escreveu:
ola.. tenho um codigo em um botao e este botao faz um locate no bando de dados e mostra o resultado em uma dbgrid.. mas codigo que estou usando mostra apenas os resultados exatos.. eu gostaria q mostrasse parcial.. tipo se digitar "a" no edit iriar aparecer na dbgrid todos que começam com a letra "a"..
Código:
 if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;



alguem pode me ajudar


Não sei se vai funcionar ai, mais tente fazer igual ao exemplo abaixo, mudando para seu campo ai e componente.

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '*'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;




Vlw.. mas nao serviu... se alguem tiver outro meio..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 27, 2011 7:13 pm    Assunto: Re: locate e resultad em dbgrid Responder com Citação

kakarlos escreveu:
adriano_servitec escreveu:
kakarlos escreveu:
ola.. tenho um codigo em um botao e este botao faz um locate no bando de dados e mostra o resultado em uma dbgrid.. mas codigo que estou usando mostra apenas os resultados exatos.. eu gostaria q mostrasse parcial.. tipo se digitar "a" no edit iriar aparecer na dbgrid todos que começam com a letra "a"..
Código:
 if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;



alguem pode me ajudar


Não sei se vai funcionar ai, mais tente fazer igual ao exemplo abaixo, mudando para seu campo ai e componente.

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '*'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;




Vlw.. mas nao serviu... se alguem tiver outro meio..


E assim com o % como curinga... veja se vai funcionar

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '%'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;
[/quote]
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
kakarlos
Experiente
Experiente


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 420

MensagemEnviada: Qui Out 27, 2011 7:20 pm    Assunto: Re: locate e resultad em dbgrid Responder com Citação

adriano_servitec escreveu:
kakarlos escreveu:
adriano_servitec escreveu:
kakarlos escreveu:
ola.. tenho um codigo em um botao e este botao faz um locate no bando de dados e mostra o resultado em uma dbgrid.. mas codigo que estou usando mostra apenas os resultados exatos.. eu gostaria q mostrasse parcial.. tipo se digitar "a" no edit iriar aparecer na dbgrid todos que começam com a letra "a"..
Código:
 if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;



alguem pode me ajudar


Não sei se vai funcionar ai, mais tente fazer igual ao exemplo abaixo, mudando para seu campo ai e componente.

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '*'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;




Vlw.. mas nao serviu... se alguem tiver outro meio..


E assim com o % como curinga... veja se vai funcionar

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '%'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;
[/quote]





ocorre um erro no momento da pesquisa..


"FilterOptions are not supported"

eu estou usando um adoquery.. sera q faz diferença???
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 27, 2011 7:32 pm    Assunto: Re: locate e resultad em dbgrid Responder com Citação

kakarlos escreveu:
adriano_servitec escreveu:
kakarlos escreveu:
adriano_servitec escreveu:
kakarlos escreveu:
ola.. tenho um codigo em um botao e este botao faz um locate no bando de dados e mostra o resultado em uma dbgrid.. mas codigo que estou usando mostra apenas os resultados exatos.. eu gostaria q mostrasse parcial.. tipo se digitar "a" no edit iriar aparecer na dbgrid todos que começam com a letra "a"..
Código:
 if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;



alguem pode me ajudar


Não sei se vai funcionar ai, mais tente fazer igual ao exemplo abaixo, mudando para seu campo ai e componente.

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '*'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;




Vlw.. mas nao serviu... se alguem tiver outro meio..


E assim com o % como curinga... veja se vai funcionar

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '%'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;






ocorre um erro no momento da pesquisa..


"FilterOptions are not supported"

eu estou usando um adoquery.. sera q faz diferença???[/quote]com o adoquery vc pode fazer um select

exemplo

Código:
WITH ADOQUERY DO
begin
  Close;
  Sql.Clear;
  Sql.Text := ' select * from suatable '+
     ' where upper(nome) like :busca ';
   Parameters.ParamByName('busca').asString := UpperCase(Edit1.Text)+'%';
   Open;
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
kakarlos
Experiente
Experiente


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 420

MensagemEnviada: Qui Out 27, 2011 7:36 pm    Assunto: Re: locate e resultad em dbgrid Responder com Citação

adriano_servitec escreveu:
kakarlos escreveu:
adriano_servitec escreveu:
kakarlos escreveu:
adriano_servitec escreveu:
kakarlos escreveu:
ola.. tenho um codigo em um botao e este botao faz um locate no bando de dados e mostra o resultado em uma dbgrid.. mas codigo que estou usando mostra apenas os resultados exatos.. eu gostaria q mostrasse parcial.. tipo se digitar "a" no edit iriar aparecer na dbgrid todos que começam com a letra "a"..
Código:
 if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;



alguem pode me ajudar


Não sei se vai funcionar ai, mais tente fazer igual ao exemplo abaixo, mudando para seu campo ai e componente.

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '*'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;




Vlw.. mas nao serviu... se alguem tiver outro meio..


E assim com o % como curinga... veja se vai funcionar

Código:
table1.Filtered:=false;
 table1.Filter:='Company='+QuotedStr(ansiUpperCase(edtTable.text + '%'));
 table1.FilterOptions:=[foCaseInsensitive];
 table1.Filtered:=true;






ocorre um erro no momento da pesquisa..


"FilterOptions are not supported"

eu estou usando um adoquery.. sera q faz diferença???
com o adoquery vc pode fazer um select

exemplo

Código:
WITH ADOQUERY DO
begin
  Close;
  Sql.Clear;
  Sql.Text := ' select * from suatable '+
     ' where upper(nome) like :busca ';
   Parameters.ParamByName('busca').asString := UpperCase(Edit1.Text)+'%';
   Open;
end;
[/quote]

tem um erro nesta linha esta acusando no .asString

Parameters.ParamByName('busca').asString := UpperCase(Edit1.Text)+'%';
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Out 27, 2011 8:10 pm    Assunto: Responder com Citação

Mostra como vc fez para eu ver o que aconteceu
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
kakarlos
Experiente
Experiente


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 420

MensagemEnviada: Sex Out 28, 2011 7:06 am    Assunto: Responder com Citação

adriano_servitec escreveu:
Mostra como vc fez para eu ver o que aconteceu



eu adicionei seu codigo e prenchi com os dados necessarios...
..
eu tbm tentei adicionar um adotable e colocar aquele codigo que vc me passou primeira mente.. mas deu erro.. nao acha nada...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Out 28, 2011 7:41 am    Assunto: Responder com Citação

Vamos lá, com o adotable tente assim

Código:
if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    //DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filter := Nome + 'LIKE ' + QuotedStr( edit8.text + '%');
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;


Para usar o filter em minhas rotinas com CLIENTDATASET, utilizo assim

Código:
procedure TfrmCadastroBase.btnLocalizarClick(Sender: TObject);
var
  Code, I: Integer;
begin
  if (cbCampo.Text <> EmptyStr) and
     (EdtLocalizar.Text <> EmptyStr) then
  begin
    //Se o campo for tipo ftInteger então entra nesta condição
    val(EdtLocalizar.Text,Code,I);
    if Code > 0 then
      dsLocal.DataSet.Filter := dsLocal.DataSet.Fields[ListaField[cbCampo.ItemIndex]].FieldName +
        ' = '+QuotedStr(UpperCase(EdtLocalizar.text))
    else
    begin
      //se o campo for tipo ftString,ftWideString,ftFixedChar entra nesta condição
      case cbTipo.ItemIndex of
        -1,0: dsLocal.DataSet.Filter   := 'Upper('+ DSLocal.DataSet.Fields[ListaField[cbCampo.ItemIndex]].FieldName +') like '+QuotedStr(UpperCase(EdtLocalizar.Text)+'%');
        1: dsLocal.DataSet.Filter   := 'Upper('+ DSLocal.DataSet.Fields[ListaField[cbCampo.ItemIndex]].FieldName +') like '+QuotedStr('%'+UpperCase(EdtLocalizar.Text)+'%');
        2:
        begin
          EdtLocalizar.Clear;
          DSLocal.DataSet.Filtered := False; //Se for esta opção então não filtra nada
        end;
      end;
    end;
    DSLocal.DataSet.Filtered := True;
    if not DSLocal.DataSet.Active then
      DSLocal.DataSet.Open;
  end;
  //Se não tiver nada então não filtra
  if (EdtLocalizar.Text = EmptyStr) then
    DSLocal.DataSet.Filtered := False;
end;


Aqui nos meus projetos funciona normal, mais é com CDS.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
kakarlos
Experiente
Experiente


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 420

MensagemEnviada: Seg Out 31, 2011 8:52 pm    Assunto: Responder com Citação

adriano_servitec escreveu:
Vamos lá, com o adotable tente assim

Código:
if DataModule1.AQcadcliente.Locate('Nome',Edit8.Text,[ loCaseInsensitive, loPartialKey   ])
    THEN BEGIN
    //DataModule1.AQcadcliente.Filter:= 'Nome='+QuotedStr(Edit8.Text);
    DataModule1.AQcadcliente.Filter := Nome + 'LIKE ' + QuotedStr( edit8.text + '%');
    DataModule1.AQcadcliente.Filtered:= True;
    ENd
    else begin
      MessageDlg('Cliente nao encontrado!', mtInformation, [mbok],0);
      DataModule1.AQcadcliente.Filtered:= false;

    end;


Para usar o filter em minhas rotinas com CLIENTDATASET, utilizo assim

Código:
procedure TfrmCadastroBase.btnLocalizarClick(Sender: TObject);
var
  Code, I: Integer;
begin
  if (cbCampo.Text <> EmptyStr) and
     (EdtLocalizar.Text <EmptyStr> 0 then
      dsLocal.DataSet.Filter := dsLocal.DataSet.Fields[ListaField[cbCampo.ItemIndex]].FieldName +
        ' = '+QuotedStr(UpperCase(EdtLocalizar.text))
    else
    begin
      //se o campo for tipo ftString,ftWideString,ftFixedChar entra nesta condição
      case cbTipo.ItemIndex of
        -1,0: dsLocal.DataSet.Filter   := 'Upper('+ DSLocal.DataSet.Fields[ListaField[cbCampo.ItemIndex]].FieldName +') like '+QuotedStr(UpperCase(EdtLocalizar.Text)+'%');
        1: dsLocal.DataSet.Filter   := 'Upper('+ DSLocal.DataSet.Fields[ListaField[cbCampo.ItemIndex]].FieldName +') like '+QuotedStr('%'+UpperCase(EdtLocalizar.Text)+'%');
        2:
        begin
          EdtLocalizar.Clear;
          DSLocal.DataSet.Filtered := False; //Se for esta opção então não filtra nada
        end;
      end;
    end;
    DSLocal.DataSet.Filtered := True;
    if not DSLocal.DataSet.Active then
      DSLocal.DataSet.Open;
  end;
  //Se não tiver nada então não filtra
  if (EdtLocalizar.Text = EmptyStr) then
    DSLocal.DataSet.Filtered := False;
end;


Aqui nos meus projetos funciona normal, mais é com CDS.


ok
ou testar vlw
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
kakarlos
Experiente
Experiente


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 420

MensagemEnviada: Ter Nov 01, 2011 9:17 pm    Assunto: Responder com Citação

deu erroo no momento de executar a pesquisa...
diz que os parametros nao sao suportado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Nov 02, 2011 10:31 pm    Assunto: Responder com Citação

kakarlos escreveu:
deu erroo no momento de executar a pesquisa...
diz que os parametros nao sao suportado
Cola aqui no forum como vc esta fazendo.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB