consulta em uma dbgrid com sql

Delphi

27/10/2010

Tenho uma edit e uma dbgrid, gostaria de digitar o nome parcial na edit e ela me mostar os dados na dbgrid. O codigo que estou usando é este:  
procedure TForm_Rel_Fornecedores.Edit1Change(Sender: TObject);
begin
  Form_Relatorio_Fornecedor.sqlquery1.Close;
  Form_Relatorio_Fornecedor.sqlquery1.SQL.Clear;
  Form_Relatorio_Fornecedor.sqlquery1.SQL.Add('Select * from fornecedor where fornecedor LIKE ''%'+edit1.Text+'%''');
  Form_Relatorio_Fornecedor.sqlquery1.Open;
end;
  porem ele me mostra todos os dados (que ja sao listados ao abrir o formuario) e nao os dados da edit
Daniel

Daniel

Curtidas 0

Respostas

Marcos Iwazaki

Marcos Iwazaki

27/10/2010

amigo verifique com atenção o data source ligado a sua query em questão. e tbm se o datasource q esta ligado no dbgrid é o mesmo data source ligado na query.
GOSTEI 0
Fernando Vilhena

Fernando Vilhena

27/10/2010

Amigo penso que sua solução abaixo deve sofrer algumas alterações.

Tenho uma edit e uma dbgrid, gostaria de digitar o nome parcial na edit e ela me mostar os dados na dbgrid.
O codigo que estou usando é este:
 
procedure TForm_Rel_Fornecedores.Edit1Change(Sender: TObject);
begin
  Form_Relatorio_Fornecedor.sqlquery1.Close;
  Form_Relatorio_Fornecedor.sqlquery1.SQL.Clear;
  Form_Relatorio_Fornecedor.sqlquery1.SQL.Add('Select * from fornecedor where fornecedor LIKE ''%'+edit1.Text+'%''');
  Form_Relatorio_Fornecedor.sqlquery1.Open;
end;

 
porem ele me mostra todos os dados (que ja sao listados ao abrir o formuario) e nao os dados da edit

1ª) Mova o código acima para o evento onCreate do form.2ª) Remova a cláusula like com as informações do edit, ou seja o código ficará assim.
procedure TForm_Rel_Fornecedores.FormCreate(Sender: TObject);
begin
  sqlquery1.Close;
  sqlquery1.SQL.Text := 'Select * from fornecedor order by fornecedor';  sqlquery1.Open;end;

No evento Edit1Change coloque o seguinte código:
procedure TForm_Rel_Fornecedores.Edit1Change(Sender: TObject);
begin    sqlquery1.Locate('fornecedor',edit1.Text, [loPartialKey, loCaseInsensitive]);end;
     
Bem acho que é isso que você deseja, espero ter ajudado.
GOSTEI 0
Daniel

Daniel

27/10/2010

amigo verifique com atenção o data source ligado a sua query em questão. e tbm se o datasource q esta ligado no dbgrid é o mesmo data source ligado na query.
  Sim sao os mesmos
GOSTEI 0
Daniel

Daniel

27/10/2010

Amigo penso que sua solução abaixo deve sofrer algumas alterações.

Tenho uma edit e uma dbgrid, gostaria de digitar o nome parcial na edit e ela me mostar os dados na dbgrid.
O codigo que estou usando é este:
 
procedure TForm_Rel_Fornecedores.Edit1Change(Sender: TObject);
begin
  Form_Relatorio_Fornecedor.sqlquery1.Close;
  Form_Relatorio_Fornecedor.sqlquery1.SQL.Clear;
  Form_Relatorio_Fornecedor.sqlquery1.SQL.Add('Select * from fornecedor where fornecedor LIKE ''%'+edit1.Text+'%''');
  Form_Relatorio_Fornecedor.sqlquery1.Open;
end;

 
porem ele me mostra todos os dados (que ja sao listados ao abrir o formuario) e nao os dados da edit

1ª) Mova o código acima para o evento onCreate do form. 2ª) Remova a cláusula like com as informações do edit, ou seja o código ficará assim.
procedure TForm_Rel_Fornecedores.FormCreate(Sender: TObject);
begin
  sqlquery1.Close;
  sqlquery1.SQL.Text := 'Select * from fornecedor order by fornecedor';
  sqlquery1.Open;
end;

No evento Edit1Change coloque o seguinte código:
procedure TForm_Rel_Fornecedores.Edit1Change(Sender: TObject);
begin
    sqlquery1.Locate('fornecedor',edit1.Text, [loPartialKey, loCaseInsensitive]);
end;
     
Bem acho que é isso que você deseja, espero ter ajudado.
  Cara tentei desta forma e ele continua nao executando a pesquisa
GOSTEI 0
Wilson Junior

Wilson Junior

27/10/2010

Você quer filtar os registros ou você quer se posicionar no registro?
GOSTEI 0
Wilson Junior

Wilson Junior

27/10/2010

Desculpe pelo erro, *filtrar
GOSTEI 0
Marcelo Diniz

Marcelo Diniz

27/10/2010

Link para download o exemplo abaixo usando base de dados Access.http://www.ligteltelecom.com.br/delphi/banco_grid.rar

procedure TForm1.edt1Change(Sender: TObject);begin    LocalizarRegistros(edt1.Text);end;
procedure TForm1.LocalizarRegistros(registro: string);begin   with qry1 do   begin         Close;         SQL.Clear;         SQL.Add('select * from marcas where marca like');         SQL.Add(QuotedStr('%' + edt1.Text + '%'));         Open;   end;end;
end.

 
GOSTEI 0
POSTAR