我对一个只有一个字段表进行操作,但当我进行删除操作时,出现如下错误,“Project  MDIAPP.exe  raised  exception  class  EDatabaseError  with  message  'Dataset  not  in  edit  or  insert  mode'.  Process  stopped,  Use  Step  or  Run  to  continue"  ,我应该如何修改程序,程序如下:  
var  
   F_basic:  TF_basic;  
   adoq_company:TADOQuery;  
   ds_company:TDatasource;  
implementation  
 
uses  DM_parameter_set;  
 
 
 
{$R  *.dfm}  
 
procedure  TF_basic.FormCreate(Sender:  TObject);  
begin  
   Height:=356;  
   Width:=354;  
   try  
       adoq_company:=TADOQuery.Create(nil);  
     
       ds_company:=TDatasource.Create(nil);  
     
       ds_company.DataSet:=adoq_company;  
     
       dbgrid1.DataSource:=ds_company;  
     
       adoq_company.Connection:=parameter_set_DM.ADOConnection1;  
     
       adoq_company.Close;  
       adoq_company.SQL.Clear;  
       adoq_company.SQL.Add('select  *  from  shzf.COMPANY');  
       adoq_company.Prepared;  
       adoq_company.Open;  
 
       
 
   except  
       showmessage('数据库连接出错');  
   end;  
 
end;  
 
procedure  TF_basic.Button1Click(Sender:  TObject);  //新增
begin  
   inherited;  
   adoq_company.Append;  
end;  
 
procedure  TF_basic.Button2Click(Sender:  TObject);  //删除
begin  
   inherited;  
   ADOq_company.Edit;  
   ADOq_company.Delete;  
   adoq_company.Post;  
end;  
 
procedure  TF_basic.Button13Click(Sender:  TObject);  //提交
begin  
   inherited;  
   ADOq_company.Edit;  
   if  ADOq_company.Fields[0].AsString  =  ''  then  
       showmessage('表中字段值不能为空')  
   else  
       ADOq_company.Post;  
end;  
 
procedure  TF_basic.Button3Click(Sender:  TObject);  //退出
begin  
   inherited;  
   ADOq_company.Free; 
   F_basic.close; 
end;  
 
 
end.  
 

解决方案 »

  1.   

    inherited;  
       ADOq_company.Edit;  
       ADOq_company.Delete; 
    //好象不用POST;
      

  2.   

    procedure  TF_basic.Button2Click(Sender:  TObject);  //删除
    begin  
       inherited;  
        ADOq_company.Delete;  
    end;  
     
      

  3.   

    把post那行去掉看看。。我一直用SQL语句删除,这种不太清楚
      

  4.   

    在删除数据记录时不能在编辑或插入状态,而你的程序中用了ADOq_company.Edit一句,在编辑状态删除数据记录是不可行的,因此有错误提示,你可以根据错误猜测嘛。