consulta em uma dbgrid com sql
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:
porem ele me mostra todos os dados (que ja sao listados ao abrir o formuario) e nao os dados da edit
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;Daniel
Curtidas 0
Respostas
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
27/10/2010
Amigo penso que sua solução abaixo deve sofrer algumas alterações.
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.
No evento Edit1Change coloque o seguinte código:
Bem acho que é isso que você deseja, espero ter ajudado.
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:
porem ele me mostra todos os dados (que ja sao listados ao abrir o formuario) e nao os dados da edit
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
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
27/10/2010
Amigo penso que sua solução abaixo deve sofrer algumas alterações.
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.
No evento Edit1Change coloque o seguinte código:
Bem acho que é isso que você deseja, espero ter ajudado.
Cara tentei desta forma e ele continua nao executando a pesquisa
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:
porem ele me mostra todos os dados (que ja sao listados ao abrir o formuario) e nao os dados da edit
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
Wilson Junior
27/10/2010
Você quer filtar os registros ou você quer se posicionar no registro?
GOSTEI 0
Wilson Junior
27/10/2010
Desculpe pelo erro, *filtrar
GOSTEI 0
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