Fórum DBGrid e Pesquisa em Banco #427400

28/10/2012

0

Galera, gostaria de ajuda para resolver a seguinte questão:
Tenho um DBGrid e os campos para busca dos dados, porem quando eu pesquiso por um nome exemplo João, ele seleciona
o nome no DBGrid corretamente, porém, mostra tudo o que existe na tabela, e eu gostaria que mostrasse só os clientes que possuem o nome semelhante.

Alguém ajuda?
Sublixo

Sublixo

Responder

Posts

28/10/2012

Valdecir Peres


Sublixo,

Tenta assim

procedure TFmCadReceb.BTpesqCLClick(Sender: TObject);
  begin
      TClientDataSet(Ds.DataSet).Close;
      TClientDataSet(Ds.DataSet).CommandText := ('SELECT * FROM NOME DA TABELA WHERE NOME DO CLENTE like'+QuotedStr     ('%'+ Edit3.Text + '%')+'Order By NOME DO CLIENTE ');
      TClientDataSet(Ds.DataSet).Open;
     end;


Abraço
Responder

Gostei + 0

28/10/2012

Sublixo


Sublixo,

Tenta assim

procedure TFmCadReceb.BTpesqCLClick(Sender: TObject);
  begin
      TClientDataSet(Ds.DataSet).Close;
      TClientDataSet(Ds.DataSet).CommandText := ('SELECT * FROM NOME DA TABELA WHERE NOME DO CLENTE like'+QuotedStr     ('%'+ Edit3.Text + '%')+'Order By NOME DO CLIENTE ');
      TClientDataSet(Ds.DataSet).Open;
     end;


Abraço


Tentei do jeito ai que vc mostrou e ainda não da certo
estou usando um SQLConnection um SimpleDataSet e um DataSource, Coloquei um SQLQuery pra ver se me ajudava e msm assim nao adianta.
Responder

Gostei + 0

28/10/2012

Claudia Nogueira

Faz um teste aí.
1 componente SQLQuery com nome SQLQuery1, pode deixar a propriedade SQL em branco;
1 componente DataSetProvider, com a propriedade DataSet = SQLQuery1 e com a propriedade poAlowCommandText do options = True;
1 componente ClientDataSet com nome ClientDataSet1, com a propriedade ProviderName = DataSetProvider1;
1 componente DataSource com nome DataSource1, com a propriedade DataSet = ClientDataSet1;
1 dbgrid com a propriedade DataSource = DataSource1;
1 edit;
1 botão e no onClick do botão o seguinte código:

  ClientDataSet1.Close;
  ClientDataSet1.CommandText := 'SELECT * FROM TABELA WHERE NOME LIKE :NOME ORDER BY NOME';
  ClientDataSet1.Params.ParamByName('NOME').AsString := '%' + Edit1.Text + '%';
  ClientDataSet1.Open;


Obs.: como não sei o nome da tabela nem os campos, você tem que trocar ali na senteça SQL pelos nomes corretos.
Responder

Gostei + 0

29/10/2012

Sublixo

Faz um teste aí.
1 componente SQLQuery com nome SQLQuery1, pode deixar a propriedade SQL em branco;
1 componente DataSetProvider, com a propriedade DataSet = SQLQuery1 e com a propriedade poAlowCommandText do options = True;
1 componente ClientDataSet com nome ClientDataSet1, com a propriedade ProviderName = DataSetProvider1;
1 componente DataSource com nome DataSource1, com a propriedade DataSet = ClientDataSet1;
1 dbgrid com a propriedade DataSource = DataSource1;
1 edit;
1 botão e no onClick do botão o seguinte código:

  ClientDataSet1.Close;
  ClientDataSet1.CommandText := 'SELECT * FROM TABELA WHERE NOME LIKE :NOME ORDER BY NOME';
  ClientDataSet1.Params.ParamByName('NOME').AsString := '%' + Edit1.Text + '%';
  ClientDataSet1.Open;


Obs.: como não sei o nome da tabela nem os campos, você tem que trocar ali na senteça SQL pelos nomes corretos.


Obrigado pela ajuda, funcionou! Este fórum é nota 101
Responder

Gostei + 0

30/10/2012

Sublixo

Claudia, só mais uma pergunta, pq não funciona só com um SimpleDataSet e um DataModule?
Responder

Gostei + 0

30/10/2012

Claudia Nogueira

Eu não usaria o SimpleDataSet por causa de suas limitações, mas se você quiser usar, ele funciona da mesma forma.
Faz um teste aí. Coloca só SimpleDataSet e o DataSource e no botão o seguinte código:

SimpleDataSet1.Close;
SimpleDataSet1.DataSet.Close;
SimpleDataSet1.DataSet.CommandText := 'SELECT * FROM TABELA WHERE NOME LIKE :NOME ORDER BY NOME';
SimpleDataSet1.DataSet.Params.ParamByName('NOME').AsString := '%' + Edit1.Text + '%';
SimpleDataSet1.DataSet.Open;
SimpleDataSet1.Open;


Claudia, só mais uma pergunta, pq não funciona só com um SimpleDataSet e um DataModule?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar