GARANTIR DESCONTO

Fórum Passar parametros para um TClientDataSet como eu faço????? #345393

31/08/2007

0

Nesse codigo abaixo acontece eu tenho que clicar duas vezes no botão para ele conseguir me trazer o resultado em uma DbGrid, sempre na primeira vez o resulta é null mais na segunda vez eu já tenho o resultado numa grid, como fazer para resolver isso

procedure TFrmConsultaCliente.Button7Click(Sender: TObject);
begin
With CDS1 do begin
Close;
Params.Clear;
CommandText := ´select * from cadastro_clientes where codigo = :COD1´;
FetchParams;
//Params.FindParam(´COD1´).Value := Trim(Edit1.text);
Params.ParamByName(´COD1´).Value := Trim(Edit1.text);
// tanto faz eu usar o FindParam ou PramByName nunca consigo o
// resultado na primeira vez sempre tenho que dar dois cliques para
// conseguir o resultado
Open;
end;
end;


Eu já fiz varios tipos de codigo como por exemplo

With CDS1 do
Close;
CommandText := ´select * from cadastro_clientes where codigo = :COD1´;
Params.Clear;
FetchParams;
Params.ParamByName(´COD1´).Value := Trim(Edit1.text);

ou seja já coloquei em varias posições diferentes as linha de codigo mais nunca tenho o resultado na primeira vez sempre é na segunda


Luciano_f

Luciano_f

Responder

Posts

31/08/2007

Luciano_f

Pessoal eu descobri que preciso passar o tipo de parametro pois o TClientDataSet não consegue resolver ele de forma automatica

dessa forma se faz necessario o seguinte codigo
CDS1.Params.ParamByName(´COD1´).ParamType := ptInputOutput;


Responder

Gostei + 0

31/08/2007

Emerson Nascimento

eu faria apenas:
procedure TFrmConsultaCliente.Button7Click(Sender: TObject);
begin
  with CDS1 do
  begin
    Close;
    CommandText := ´select * from cadastro_clientes where codigo = :COD1´;
    Params.ParamByName(´COD1´).AsString := Trim(Edit1.text);
    Open;
  end;
end; 



Responder

Gostei + 0

31/08/2007

Luciano_f

Jovem isso ai não funciona


procedure TFrmConsultaCliente.Button7Click(Sender: TObject); begin with CDS1 do begin Close; CommandText := ´select * from cadastro_clientes where codigo = :COD1´; Params.ParamByName(´COD1´).AsString := Trim(Edit1.text); Open; end; end;



pelo menos aqui isso não dá certo não...


Responder

Gostei + 0

31/08/2007

Emerson Nascimento

não traz registros ou dá algum erro?

eu trabalho dessa forma e nunca tive qualquer problema.


Responder

Gostei + 0

31/08/2007

T3r3son

Olá, você já tentou dessa forma?

procedure TFrmConsultaCliente.Button7Click(Sender: TObject);
begin
with CDS1 do
begin
Close;
CommandText := ´select * from cadastro_clientes where codigo = :COD1´;
Params[0].AsString := Edit1.text;
Open;
end;
end;


Utilizo em minhas consultas algo semelhante ao o que o Luciano e o Guinther têm passado nas video-aulas sobre clientdataset e funciona!!!
[]´s
Evaristo


Responder

Gostei + 0

01/09/2007

Luciano_f

não traz registros ou dá algum erro? eu trabalho dessa forma e nunca tive qualquer problema.


Não traz registros
fica nulo
só vai trazer registro quando eu dar um segundo clik no botão
e dá forma como voce disse mesma coisa
isso só é resolvido se eu colocar

Params.ParamByName(´COD1´).ParamType := ptInputOutput;



Responder

Gostei + 0

01/09/2007

Roger1976

Amigo, eu faria uma pequena modificação:

procedure TFrmConsultaCliente.Button7Click(Sender: TObject);
begin
with CDS1 do
begin
Close;
CommandText := ´select * from cadastro_clientes ´ +
´where codigo = :COD1´;
Params.ParamByName(´COD1´).AsInteger := strtoint(Edit1.Text);
Open;
// se nao houver registro
if isempty then
showmessage(´codigo nao encontrado´);
end;
end;

Eu sempre uso o mesmo tipo de dados definido na tabela para os parâmetros. Neste exemplo, suponho que o codigo tenha sido definido como inteiro na tabela. Essa é a minha forma de trabalho.

Os componentes utilizados neste exemplo são SQLCONNECTION, DATASETPROVIDER, SQLDATASET, CLIENTDATASET e DATASOURCE, e o bd é Firebird.

Qualquer dúvida, é só postar.


Responder

Gostei + 0

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

Aceitar