procedure Tf_dzd.btprintClick(Sender: TObject);
var
  pay : real;
begin
  begin
    with f_dm.asp_qwfk do
    begin
      active := false;
      parameters.ParamByName('@clientno').Value := dxdbbuttonedit2.Text;
      parameters.ParamByName('@ddate1').Value := dxdbdateedit2.Text;
      parameters.ParamByName('@ddate2').Value := dxdbdateedit1.Text;
      ExecProc;
    end;
    pay := f_dm.asp_qwfk.Parameters.ParamValues['@pay'];//这里没错
  end;
  f_dzd.ppLabel16.Caption := '累计应付:' + floattostr(strtofloat(dbedit4.Text)+ pay);//出错
  f_dzd.ppLabel17.Caption := '前未付款:' + Floattostr(pay);//出错
end;
提示数据类型出错

解决方案 »

  1.   

    @pay是什么类型的字段?
    这样做:
    pay := XXXtofloat(f_dm.asp_qwfk.Parameters.ParamValues['@pay'].value);//这里没错
      end;
      f_dzd.ppLabel16.Caption := '累计应付:' + floattostr(strtofloat(dbedit4.Text)+ pay);//出错
      f_dzd.ppLabel17.Caption := '前未付款:' + Floattostr(pay);//出错
      

  2.   

    parameters.ParamByName('@clientno').Value := StrToInt(....);要按这种方式来确定Value的类型
      

  3.   

    @pay是一个输出参数,是float型,所以
    pay := f_dm.asp_qwfk.Parameters.ParamValues['@pay'];//这里没错
    只是后两名出错
    f_dzd.ppLabel16.Caption := '累计应付:' + floattostr(strtofloat(dbedit4.Text)+ pay);//出错
      f_dzd.ppLabel17.Caption := '前未付款:' + Floattostr(pay);//出错
      

  4.   

    单步将取出的 Pay 值 看看
      

  5.   

    试一试这个
    pay := f_dm.asp_qwfk.Parameters.ParamByName('@pay').AsFloat;