Fórum PESQUISA #428544
10/11/2012
0
QUANDO EU PESQUISO PELO NOME OU RG O SISTEMA PESQUISA E ME MOSTRA O QUE EU ESTOU CONSULTANDO, MAIS TODOS OS OUTROS REGISTROS FICAM VISÍVEIS. EU QUERIA QUE FICASSE VISÍVEL SÓ O REGISTRO QUE EU ESTOU PESQUISANDO, ALGUEM AJUDE?
codigos da pesquisa
procedure TFrmRegistrosCadastrados.Button1Click(Sender: TObject);
Var
sSQL : String;
begin
sSQL := '';
if EdtNome.Text <> '' then
sSQL := ' AND (nome like '+QuotedStr(EdtNome.Text+'%')+')';
if EdtRG.Text <> '' then
sSQL := ' AND (RG like '+QuotedStr(EdtRG.Text+'%')+')';
with Dm.Qry do
begin
Close;
SQL.Text := 'SELECT * FROM PM WHERE (1=1) ' + sSQL + ' ORDER BY nome';
Open;
if not Dm.Qry.IsEmpty then
Dm.IBTable1.Locate('RG',Dm.Qry.FieldByName('RG').AsString,[]);
end;
end;
Paulo
Curtir tópico
+ 0Posts
10/11/2012
William
Esse Locate tem alguma finalidade especifica?
Quando quero filtrar os dados uso somente a instrução SQL que carrega somente os registros que atendem a condição WHERE.
Gostei + 0
10/11/2012
Paulo
Esse Locate tem alguma finalidade especifica?
Quando quero filtrar os dados uso somente a instrução SQL que carrega somente os registros que atendem a condição WHERE.
TIVE MUITA DIFICULADADE DE USAR SÓ O IBQUERY, ENTÃO EU USO O IBTABLE(que é mais facil para mim para incluir registros, excluir, editar, etc....) PARA O CADASTRO E O IBQUERY SÓ PARA CONSULTA.
Gostei + 0
10/11/2012
William
Os componentes Tables ajudam mas limitam muito as ações também !
Gostei + 0
10/11/2012
Paulo
Os componentes Tables ajudam mas limitam muito as ações também !
e como seria inserir, excluir e editar registros no TSQLQuery? no IBTable é: INSERIR = IBTable.append; EXCLUIR = IBTable.delete, EDITAR = IBTable. edit; é muito facil. vc pode me dar uma dica de como faz isso como o TSQLQuery?
Gostei + 0
10/11/2012
William
Geralmente essas operações executo via SQL no componente INSERT, UPDATE, DELETE.
Gostei + 0
10/11/2012
Deivison Melo
Se usar a query não vai ocorrer isso...
Gostei + 0
10/11/2012
Deivison Melo
O problema está nessa parte do código...
Dm.IBTable1.Locate('RG',Dm.Qry.FieldByName('RG').AsString,[]);
Só não entendi pq usou um component query e depois esse component ibtable...
Gostei + 0
11/11/2012
Claudia Nogueira
Exemplo:
Dm.IBTable1.Filtered := False;
if not Dm.Qry.IsEmpty then
begin
Dm.IBTable1.Filter := ' codigo = ' + IntToStr(Dm.Qry.FieldByName('codigo').AsInteger);
Dm.IBTable1.Filtered := True;
end;
Obs.: o "codigo" você tem que trocar pelo nome do campo chave da sua tabela.
Gostei + 0
13/11/2012
Paulo
Exemplo:
Dm.IBTable1.Filtered := False;
if not Dm.Qry.IsEmpty then
begin
Dm.IBTable1.Filter := ' codigo = ' + IntToStr(Dm.Qry.FieldByName('codigo').AsInteger);
Dm.IBTable1.Filtered := True;
end;
Obs.: o "codigo" você tem que trocar pelo nome do campo chave da sua tabela.
SÓ QUE O MEU CAMPO CHAVE (RG) JÁ NÃO É MAIS INTEGER. COMO SERIA O CODIGO SUBSTIUINDO O INTEGER?
LEMBRANDO QUE NO LUGAR DO AsInteger eu coloquei AsString, mais não deu certo.
Gostei + 0
13/11/2012
Claudia Nogueira
procedure TFrmRegistrosCadastrados.Button1Click(Sender: TObject);
Var
sSQL : String;
begin
sSQL := '';
if EdtNome.Text <> '' then
sSQL := ' AND (nome like '+QuotedStr(EdtNome.Text+'%')+')';
if EdtRG.Text <> '' then
sSQL := ' AND (RG like '+QuotedStr(EdtRG.Text+'%')+')';
with Dm.Qry do
begin
Close;
SQL.Text := 'SELECT * FROM PM WHERE (1=1) ' + sSQL + ' ORDER BY nome';
Open;
Dm.IBTable1.Filtered := False;
if not Dm.Qry.IsEmpty then
begin
Dm.IBTable1.Filter := ' codigo = ' + IntToStr(Dm.Qry.FieldByName('codigo').AsInteger);
Dm.IBTable1.Filtered := True;
end;
end;
end;
Eu digitei codigo para o campo chave da tabela, na sua tabela esse campo tem outro nome, tem que trocar ali no código.
Gostei + 0
15/11/2012
Paulo
procedure TFrmRegistrosCadastrados.Button1Click(Sender: TObject);
Var
sSQL : String;
begin
sSQL := '';
if EdtNome.Text <> '' then
sSQL := ' AND (nome like '+QuotedStr(EdtNome.Text+'%')+')';
if EdtRG.Text <> '' then
sSQL := ' AND (RG like '+QuotedStr(EdtRG.Text+'%')+')';
with Dm.Qry do
begin
Close;
SQL.Text := 'SELECT * FROM PM WHERE (1=1) ' + sSQL + ' ORDER BY nome';
Open;
Dm.IBTable1.Filtered := False;
if not Dm.Qry.IsEmpty then
begin
Dm.IBTable1.Filter := ' codigo = ' + IntToStr(Dm.Qry.FieldByName('codigo').AsInteger);
Dm.IBTable1.Filtered := True;
end;
end;
end;
Eu digitei codigo para o campo chave da tabela, na sua tabela esse campo tem outro nome, tem que trocar ali no código.
a pesquisa esta dando certo, mais por exemplo: no meu cadastro tem três registros com nome PAULO, eu gostaria que quando eu digitar PAULO, todos os registros que contenham PAULO apareça no DBGRID e com esses codigos aparece só um.
Gostei + 0
16/11/2012
Claudia Nogueira
Dm.IBTable1.Filtered := False;
if not Dm.Qry.IsEmpty then
begin
Dm.IBTable1.Filter := ' codigo = ' + IntToStr(Dm.Qry.FieldByName('codigo').AsInteger);
Dm.IBTable1.Filtered := True;
end;
Então resumindo, você usa aquele código no botão pra consulta, e esses outros códigos nos eventos do DBGrid que mencionei.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)