服务器端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.'...请问如何解决该问题?原因是?将SQL写在客户端commandtext,提交查询就没有问题

解决方案 »

  1.   

    var
       pm:Tparam;
    begin
         ClientDataSet1.Close;
         pm:=Tparam.Create(nil);
         pm.Name:='dd';
         pm.DataType:=ftString;
         ClientDataSet1.Params.Clear;
         ClientDataSet1.Params.AddParam(pm);
         ClientDataSet1.Params.ParamByName('dd').AsString:=edit1.Text ;
         ClientDataSet1.Open;
         pm.Free;
    end;一般情况下我写的都是存储过程返回的结果集
      

  2.   

    1.把Value改成AsString试试
    ClientDataSet1.Params.ParamByName('billno').AsString := edit1.Text;
    2.检查服务端DataSetProvider的Options中poAllowCommandText=True