服务器端adoqueryd设定了参数billno,sql语句如下:select * from t123 where fbillno=:billno客户端通过用clientdataset连接,希望传递客户端参数给服务器端,并返回查询结果:
clientdataset1.close;
clientdataset1.fetchparams;
clientdataset1.params.paramsbyname('billno').value:=edit1.text;
clientdataset1.open;每当执行到clientdataset1.open时,程序报错:
.....EDBClient with message 'Invalid parameter.'...请问如何解决该问题?原因?

解决方案 »

  1.   

    clientdataset1.params.paramsbyname('billno').AsString:=edit1.text;
    这样试过?
      

  2.   

    to qsc800528(星空) :试过了,还是一样
      

  3.   

    服务端的 DataSetProvider1->Options->poAllowCommandText 属性设置为真没有
      

  4.   

    to xxc028: 设置了的,问题还是一样
      

  5.   

    你在 ClientDataSet1->params 属性中有没有你设置的参数,如果没有就是你的参数设置有问题了
      

  6.   

    我是通过ClientDataSet1.fetchparams获得参数的
      

  7.   

    clientdataset.CommandText := 'select * from t123 where fid=:id'才行
      

  8.   

    sorry!
    AdoQury置'select * from t123 where fid=:id'
    后会自动设置参数id
      Self.ClientDataSet1.Close;
      Self.ClientDataSet1.FetchParams;
      Self.ClientDataSet1.Params.ParamByName('id').AsInteger := 1;
      Self.ClientDataSet1.Open;
    在我这里没问题。
      

  9.   

    to YuTuBe不会吧
    在AdoQury置'select * from t123 where fid=:id',后会自动设置参数id????
    ----意思是说不要手动设置AdoQuery参数吗????
    如果这样:ClientDataSet1.FetchParams;
    ClientDataSet1.Params.ParamByName('id').AsInteger := 1;
    ClientDataSet1.Open;
    提示找不到参数'id'在你那里没有问题???
      

  10.   

    是的,当sql设置为'select * from t123 where fid=:id'时你打开Parameters可以看到参数已经存在
    上面的做法我测试过,没问题
      

  11.   

    value改成AsString试试
    clientdataset1.params.paramsbyname('billno').asstring:=edit1.text;