procedure TForm2.Button1Click(Sender: TObject);
var
  str:string;
begin
  str:='select * from client_info';
  DataModule3.Query1.Close;
  DataModule3.Query1.SQL.Clear;
  DataModule3.Query1.SQL.Add(str);
  DataModule3.Query1.excsql;            //open也试过
  DataModule3.Query1.Edit;              //调试的时候这里过不去。报错
  DataModule3.Query1.Append;
  DataModule3.Query1.FieldValues['clientname']:=edit1.text;
  DataModule3.Query1.Post;
end;运行的时候报“cannot perform this operation on a closed dataset"错误。
不知道是什么样的错误?
不知道大家以前有遇到吗?请指教!谢谢

解决方案 »

  1.   

    procedure TForm2.Button1Click(Sender: TObject);
    var
      str:string;
    begin
      str:='select * from client_info';
      DataModule3.Query1.Close;
      DataModule3.Query1.SQL.Clear;
      DataModule3.Query1.SQL.Add(str);
      DataModule3.Query1.excsql;            //open也试过
      DataModule3.Query1.open;  ///////////////////////////
      DataModule3.Query1.Edit;              //调试的时候这里过不去。报错
      DataModule3.Query1.Append;
      DataModule3.Query1.FieldValues['clientname']:=edit1.text;
      DataModule3.Query1.Post;
    end;
      

  2.   

    1 DataModule3.Query1.excsql;改为open应该可以 
    2 是query还是adoquery?用table控件呢?
      

  3.   

    with adoquery2 do
      begin
      close;
      sql.Clear;
      sql.Add('select * from PURMA');
      execsql;
      active:=true;
      EDIT;
      append;
      end;
      

  4.   

    如上代码用OPEN也行,用execsql如不active就出现你说的情况。
      

  5.   

    是用的QUERY
    DATAMODULE
    我试过了。还是不行。
      

  6.   

    procedure TForm2.Button1Click(Sender: TObject);
    var
      str:string;
    begin
      str:='select * from client_info';
      DataModule3.Query1.Close;
      DataModule3.Query1.SQL.Clear;
      DataModule3.Query1.SQL.Add(str);
      DataModule3.Query1.open;  
      DataModule3.Query1.Append;
      DataModule3.Query1.FieldValues['clientname']:=edit1.text;  
    end;这样就可以了
      

  7.   

    我在用了楼上这位仁兄的代码后
    又出现了“can't modify read-only dataset"这个新的错误
    我检查过query不是只读状态。晴大家帮我一起来看看。谢谢了
      

  8.   

    procedure TForm2.Button1Click(Sender: TObject);
    var
      str:string;
    begin
      str:='select * from client_info';
      DataModule3.Query1.Close;
      DataModule3.Query1.SQL.Clear;
      DataModule3.Query1.SQL.Add(str);
      DataModule3.Query1.Open;            
      DataModule3.Query1.Edit;              
      DataModule3.Query1.Append;
      DataModule3.Query1.FieldValues['clientname']:=edit1.text;
      DataModule3.Query1.Post;
    end;