Array
(
)

Como colocar parametros no Dataset

Marcello
   - 06 jan 2006

Caros colegas,

Estava utilizando uma consulta sql assim :
Select * From Vendas
no compenente TSQLQuery da paleta DBExpress, mas no código do programa, ao executar a query eu trocava por:

CDSVenda.Close;
QyVenda.SQL.Clear;
QyVenda.SQL.Add(´Select * From ´VENDA´ Where NUM_OPER = :mNum_oper´);
QyVenda.ParamByName(´mNum_oper´).AsInteger:= 10;
CDSVenda.Open;

Vendo a bobeira, resolvi alterar no TSQLQuery e criar um parâmetro no componente, no caso mNum_Oper, ftInteger e ptInput.
Dei o Fetch Params no ClientDataset, tudo certinho, e alterei o código assim:

CDSVenda.Close;
QyVenda.ParamByName(´mNum_oper´).AsInteger:= 10;
CDSVenda.Open;

Acontece q após a referida mudança a consulta só funciona na segunra vez q eu a executo.
Na primeira vez vem vazio, eu fecho e executo novamente, daí traz o registro.

Estou usando Delphi 7, com Firebird 1.5, Windows XP e DbExpress (SQLQuery + Dataprovider + ClientDataSet).

O q pode ser ?

Agradeço a ajuda dos colegas,

Marcello.


Marcello
   - 09 jan 2006

:( sobe.


Emerson
   - 10 jan 2006

meu colega... quando você trabalha com clientdatasets não é recomendado manipular de forma nenhuma o dataset origem.

acrescente poAllowCommandText à propriedade Options do datasetprovider e faça tudo no clientdataset.

CDSVenda.Close;
CDSVenda.CommandText := ´Select * From ´VENDA´ Where NUM_OPER = :mNum_oper´;
CDSVenda.Params.ParamByName(´mNum_oper´).AsInteger:= 10;
CDSVenda.Open;


Marcello
   - 15 jan 2006

:D Valeu emerson.en.