当我要更新的时候,会显示“table is read only”错误来    
query6.close;
Query6.SQL.clear;
Query6.SQL.Text:='select * from mobinformitem where mobinformitem.id=:fgf ';
  Query6.Params[0].Value:=informid;
  query6.RequestLive:=true;
  query6.open;
  query6.RequestLive:=true;
  query6.Edit;
  query6.FieldByName('configid').AsInteger:=configid;
  query6.FieldByName('price').AsCurrency:=strtocurr(maskedit1.Text);
  query6.FieldByName('amount').AsInteger:=strtoint(maskedit2.Text);
  query6.FieldByName('opdate').AsDateTime:=now;
  query6.FieldByName('opmanid').AsInteger:=userid;
  query6.FieldByName('mobtypeid').AsInteger:=mobtypeid;
  query6.Post;

解决方案 »

  1.   

    你在 query6.RequestLive:=true;
    之后写上一个判断 if (Query6.CanModify) then
      Query6.Edit;用sql 得到的是视图,视图和表有本质区别,视图的更新条件比较苛刻。
    能否修改出了数据库本身有关系,可数据库引擎也有关系,你上面的语句用ADO修改肯定没问题。有空看看数据库理论方面的书。
      

  2.   

    pazee(耙子)  真是高手学习~~~~~~~:)
      

  3.   

    有时数据库中用计算字段也可能导致readonly,如Field3=Field1+Field2,当你修改数据时搞不好就会提示错误