当我连接好 数据库以后
用非数据控制组件来修改数据库里面的每条 记录的时候
我将query不能置于EDIT状态 当编译好后 使用时 出现 QUERY DATASET READY-ONLY 等消息。
我的代码是:
procedure Tmainform.Button5Click(Sender: TObject);
begin
if query2.Active=true then
  if ((trim(edit1.Text)<>'')and (trim(edit2.Text)<>'')and (trim(edit3.Text)<>'')and
  (trim(edit11.Text)<>'')and (trim(edit9.Text)<>'')and (trim(edit10.Text)<>'')and
  (trim(edit7.Text)<>'')and (trim(edit8.Text)<>'')and (trim(edit5.Text)<>''))
  then
  with query2 do
   begin
     try
       Edit;
       fieldbyname('id').AsInteger:=strtoint(edit1.text);
       fieldbyname('菜钱').AsInteger:=strtoint(edit2.text);
       fieldbyname('油钱').AsInteger:=strtoint(edit3.text);
       fieldbyname('米钱').AsInteger:=strtoint(edit11.text);
       fieldbyname('气钱').AsInteger:=strtoint(edit9.text);
       fieldbyname('房租').AsInteger:=strtoint(edit10.text);
       fieldbyname('其它支出').AsInteger:=strtoint(edit7.text);
       fieldbyname('总金额').AsInteger:=strtoint(edit8.text);
       fieldbyname('付款人').Asstring:=edit1.text;
       post;
       application.MessageBox('修改成功','提示',0+64);
     except
       application.MessageBox('系统出错','提示',0+64);
       close;
     end;
   end;end;

解决方案 »

  1.   


    procedure Tmainform.Button5Click(Sender: TObject);
    begin
    if query2.Active=true then
      if ((trim(edit1.Text)<>'')and (trim(edit2.Text)<>'')and (trim(edit3.Text)<>'')and
      (trim(edit11.Text)<>'')and (trim(edit9.Text)<>'')and (trim(edit10.Text)<>'')and
      (trim(edit7.Text)<>'')and (trim(edit8.Text)<>'')and (trim(edit5.Text)<>''))
      then
      with query2 do
       begin
         try
           Query2.RequestLive:=True;//注意这里
           Edit;
           fieldbyname('id').AsInteger:=strtoint(edit1.text);
           fieldbyname('菜钱').AsInteger:=strtoint(edit2.text);
           fieldbyname('油钱').AsInteger:=strtoint(edit3.text);
           fieldbyname('米钱').AsInteger:=strtoint(edit11.text);
           fieldbyname('气钱').AsInteger:=strtoint(edit9.text);
           fieldbyname('房租').AsInteger:=strtoint(edit10.text);
           fieldbyname('其它支出').AsInteger:=strtoint(edit7.text);
           fieldbyname('总金额').AsInteger:=strtoint(edit8.text);
           fieldbyname('付款人').Asstring:=edit1.text;
           post;
           application.MessageBox('修改成功','提示',0+64);
         except
           application.MessageBox('系统出错','提示',0+64);
           close;
         end;
       end;end;
      

  2.   

    query 不可写只可以读。改用table 就可以了,或是改用adoquery