Como colocar parametros no Dataset
06/01/2006
0
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.
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
Curtir tópico
+ 0
Responder
Posts
10/01/2006
Emerson Nascimento
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;
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;
Responder
Clique aqui para fazer login e interagir na Comunidade :)