Passar parametros para um TClientDataSet como eu faço?????
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
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
Curtidas 0
Respostas
Luciano_f
31/08/2007
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;
dessa forma se faz necessario o seguinte codigo
CDS1.Params.ParamByName(´COD1´).ParamType := ptInputOutput;
GOSTEI 0
Emerson Nascimento
31/08/2007
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;
GOSTEI 0
Luciano_f
31/08/2007
Jovem isso ai não funciona
pelo menos aqui isso não dá certo não...
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...
GOSTEI 0
Emerson Nascimento
31/08/2007
não traz registros ou dá algum erro?
eu trabalho dessa forma e nunca tive qualquer problema.
eu trabalho dessa forma e nunca tive qualquer problema.
GOSTEI 0
T3r3son
31/08/2007
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
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
GOSTEI 0
Luciano_f
31/08/2007
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;
GOSTEI 0
Roger1976
31/08/2007
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.
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.
GOSTEI 0