Fórum Modelo de pesquisa e duvidas sobre o componente datasetprovider #9630

28/09/2009

0

Ola amigos nao video demo mostro uma ideia onde pretendo contruir um modelo de formulario de pesquisa onde pretendo passar o commandtext do clientdataset em tempo de execuçao seria possivel ? acho que sim claro ! outra duvida e sobre o datasetprovider se eu setar o poallowcommandtext para true posso passar o sql direto na propriedade commandtext do clientdataset que alias e como eu faço aqui.mas seria correto isso ? o componente nao ficaria sobrecaregado demais se eu tivesse dezenas de clientdataset no projeto e todos apontando para o mesmo provider ?

[#VIDEO-153#]
Carlos Faria

Carlos Faria

Responder

Posts

28/09/2009

Carlos Faria

Caiu no cara "Rodrigo carreiro" to de sorte hoje !
Responder

Gostei + 0

28/09/2009

Carlos Faria

Ola Rodrigo Esqueci de passar uma informaçaõ importante no banco sql a vw_cliente exemplo nao tem parametros ela retorna tudo mais sei que seu eu colocar no command text do clientdataset um paramento ele funciona.   Gostaria de cada opção de pesquiza passar um paramentro em tempo de execuçao
Responder

Gostei + 0

28/09/2009

Carlos Faria

Ola Rodrigo     procedure TForm1.btnpesquisarClick(Sender: TObject);
begin  case rg.ItemIndex  of
 0:
 begin
    with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where TELEFONE like :pTELEFONE';
      Params.ParamByName('pTELEFONE').AsString := edtbusca.Text;
      clientdataset.FetchParams ;
      Open ;
      lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
    end;
   end;
   1:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where nome like :pnome';
      Params.ParamByName('pnome').AsString := edtbusca.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
   end;
   END;
   2:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where ENDERECO like :pENDERECO';
      Params.ParamByName('pENDERECO').AsString := edtbusca.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
      end;
   END;
   3:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where bairro like :pbairro';
      Params.ParamByName('pbairro').AsString := edtbusca.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
      end;
   END;
   4:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where nome like :pnome and bairro like :pbairro';
      Params.ParamByName('pnome').AsString := edtbusca.Text +'%';
      Params.ParamByName('pbairro').AsString:= lblbairro.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
      end;
   END;  end;
end;     Acho que isso ai deve ser minha resposta ,falta apenas vc ver se esta ok dessa maneira e nao esquecer de me falar sobre o datasetprovider
Responder

Gostei + 0

29/09/2009

Rodrigo Mourão

Olá Carlos desculpe a demora em responder o sistema de chamada nao esta me notificando por email quando um chamado e aberto pra mim, mas vamos lá.

Seu raciocio esta correto tem apenas uma pequenas mudancas de logica. Observe:

procedure TForm1.btnpesquisarClick(Sender: TObject);
begin  case rg.ItemIndex  of
 0:
 begin
    with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where TELEFONE like :pTELEFONE';
        FetchParams
      Params.ParamByName('pTELEFONE').AsString := edtbusca.Text;
      clientdataset.FetchParams ;
      Open ;
      lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
    end;
   end;
   1:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where nome like :pnome';
      FetchParams
      Params.ParamByName('pnome').AsString := edtbusca.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
   end;
   END;
   2:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where ENDERECO like :pENDERECO';
        FetchParams
      Params.ParamByName('pENDERECO').AsString := edtbusca.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
      end;
   END;
   3:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where bairro like :pbairro';
         FetchParams
      Params.ParamByName('pbairro').AsString := edtbusca.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
      end;
   END;
   4:
   BEGIN
      with clientdataset do
      begin
      Close;
      FetchParams ;
      CommandText := 'select * from vw_cliente_2008 where nome like :pnome and bairro like :pbairro';
        FetchParams
      Params.ParamByName('pnome').AsString := edtbusca.Text +'%';
      Params.ParamByName('pbairro').AsString:= lblbairro.Text +'%';
      Open ;
       lblTotal.Caption := IntToStr(ds.DataSet.RecordCount);
      end;
   END;  end;
end;


Tire os codigos que eu risquei e acrescente os que estao em vermelho. Outra coisa pode ficar tranquilo que nao sobre carrega o datasetprovider nao pois esta é a ideia com clientedataset vc nao fica conectado direto. Os dados ficam off line por isso ele é tao bom e utilizado para grandes volumes de dados.

Abraços


 
Responder

Gostei + 0

29/09/2009

Carlos Faria

Certo pode fechar o chamado
Responder

Gostei + 0

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

Aceitar