 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Qua Out 26, 2011 9:45 pm Assunto: locate e resultad em dbgrid |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qua Out 26, 2011 10:24 pm Assunto: Re: locate e resultad em dbgrid |
|
|
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 |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Qui Out 27, 2011 6:46 pm Assunto: Re: locate e resultad em dbgrid |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Out 27, 2011 7:13 pm Assunto: Re: locate e resultad em dbgrid |
|
|
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 |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Qui Out 27, 2011 7:20 pm Assunto: Re: locate e resultad em dbgrid |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Out 27, 2011 7:32 pm Assunto: Re: locate e resultad em dbgrid |
|
|
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 |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Qui Out 27, 2011 7:36 pm Assunto: Re: locate e resultad em dbgrid |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Sex Out 28, 2011 7:06 am Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Out 28, 2011 7:41 am Assunto: |
|
|
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 |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Seg Out 31, 2011 8:52 pm Assunto: |
|
|
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 |
|
 |
kakarlos Experiente

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 420
|
Enviada: Ter Nov 01, 2011 9:17 pm Assunto: |
|
|
deu erroo no momento de executar a pesquisa...
diz que os parametros nao sao suportado |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|