self.ADOQuery1.close;
self.ADOQuery1.SQL.Clear;
self.ADOQuery1.SQL.Add('update maintable');
self.ADOQuery1.SQL.Add('set no =:nu,sttime=:time,stwork=:work,edtime=:endtime,edwork=:show,flag=:flag1');
self.ADOQuery1.Parameters.ParamByName('nu').Value:=dbedit1.text;
self.ADOQuery1.Parameters.ParamByName('time').Value:=strtodate(dbedit2.Field.AsVariant);
self.ADOQuery1.Parameters.ParamByName('work').Value:=dbedit3.text;
self.ADOQuery1.Parameters.ParamByName('endtime').Value:=strtodate(dbedit4.Field.AsVariant);
self.ADOQuery1.Parameters.ParamByName('show').Value:=dbedit5.text;
self.ADOQuery1.Parameters.ParamByName('flag1').Value:=dbedit6.Text;
if self.ADOQuery1.Prepared=false then self.ADOQuery1.Prepared;
self.ADOQuery1.execsql;
我想用控件的内容对数据库的记录进行修改
可是上边的代码报错:运行程序当前使用了错误的类型值,我不知道那里错了!
我的数据库结构是:
  NO     数值型
  STTIME 日期时间型
  STWORK 字符型
  ENTIME 日期时间型
  EDSHOW 字符型
  FLAG   字符型

解决方案 »

  1.   

    self.ADOQuery1.Parameters.ParamByName('nu').Value:=strtoint(dbedit1.text);测试一下
      

  2.   

    如果是浮点型
    self.ADOQuery1.Parameters.ParamByName('nu').Value:=strtofloat(dbedit1.text);测试一下
      

  3.   

    是啊!字符型需要转化为数值型。
    就是上面仁兄说的:
    self.ADOQuery1.Parameters.ParamByName('nu').Value:=strtoint(dbedit1.text);
      

  4.   

    测试了
    刚刚的问题解决了但还是错问题
    提示:
    IS NOT A VALID INTEGER VALUE
      

  5.   

    self.ADOQuery1.SQL.Add('update maintable');
    self.ADOQuery1.SQL.Add('set no 
    好像没空格
    你没有设置参数的数据类型
    你还不如不用参数
      

  6.   

    先说句题外话:所有的self.都去掉,一点用都没有
    IS NOT A VALID INTEGER VALUE
    是你没有给那个字段赋值
      

  7.   

    是你的dbedit1.text要么是空的,要么是非法的数值字符了
    空的转换时肯定报错,错误的数值字符转换也报错,都是这样的错误
      

  8.   

    没有啊
    我的DBEDIT1.TEXT里面的值是原来数据库的值啊
    我一进去第二个FORM就把它的ADO设置成了EDIT
    里边有个数字啊13
      

  9.   

    self.ADOQuery1.Parameters.ParamByName('nu').Value:=trim(dbedit1.text);
    去掉空字符看看
      

  10.   

    寫update語句時有錯誤,空格問題也存在阿