procedure TForm_UserManage.Button2Click(Sender: TObject);
var
  valueset:String;
begin
  DataModule1.ADOQuery1.Close;
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Add('update userpower set '+ComboBox1.Text+' =:valueset');
  DataModule1.ADOQuery1.Parameters.ParamByName('valueset').Value:=edit1.text;
  DataModule1.ADOQuery1.ExecSQL;
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Add('select * from userpower');
  DataModule1.ADOQuery1.Open;
  end;这段程序是在查找到符合条件的记录之后,对当前记录的某个字段进行更新,但是当我用
DataModule1.ADOQuery1.Parameters.ParamByName('valueset').Value:='xxx';
时,可以正确修改,用edit输入新的值就不行了,运行时总是提示:不正确的数据精度?
我的表中的几个字段全是文本型的

解决方案 »

  1.   

    你要进行类型转换。转成什么类型要看你的定义。例如:你定义的valueset的字段是VARCHAR
    那么,DataModule1.ADOQuery1.Parameters.ParamByName('valueset')。ASSTRING:=edit1.text;
      

  2.   

    可是我就没有找adoquery.parameters.parambyname().asstring
    只有.value啊?
      

  3.   

    DataModule1.ADOQuery1.Parameters.ParamByName('valueset').ASSTRING:=edit1.text;
      

  4.   

    DataModule1.ADOQuery1.Parameters.ParamByName('valueset').ASSTRING:=edit1.text;
    编译时报错:未定义的asstring