procedure TForm3.Button4Click(Sender: TObject);
 var c1,c5,c2,c3,e13,e16:string;
begin  c1:=trim(combobox1.Text);
  c5:=trim(combobox5.Text);
  c2:=trim(combobox2.Text);
  c3:=trim(combobox3.Text);
  e13:=trim(edit13.Text);
  e16:=trim(edit16.Text);
  try
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select *');
  adoquery1.SQL.Add('from .db');
  adoquery1.SQL.Add('where Sdepar='+QuotedStr(c1)+'and smajor='+QuotedStr(c5)+'and sgrade='+quotedstr(c2)+'and sclass='+quotedstr(c3)+'and cno='+quotedstr(e13)); 
  
  adoquery1.Open;
 except
 on edatabaseerror do adoquery1.ExecSQL
 end
end;这是我让所需数据显示在DBgrid里的代码。
界面上我设置了DBNavigator,我想通过它对DBgrid里的数据进行修改,同时也就改掉了数据库表格里的数据。
但在我运行的时候对DBgrid里的数据修改后再按DBNavigator里的“勾”即“post edit”按钮后就会出现一下错误提示:
“  project project1.exe raised exception class EOleException with message '[Microsoft][ODBC paradox Driver]操作必须使用一个可更新的查询。'.”是不是在DBNavigator或者DBgrid里的某个事件中也要添加什么代码?还请高手们多多指教!!!

解决方案 »

  1.   

    看不出楼主的代码想做什么,你只要把DBnavigator和DBgrid设置成同一个datasource,就可以实现控制了
      

  2.   

    DBnavigator和DBgrid设置成同一个datasource,DBnavigator的每个按钮都负责一个功能,其中有post,点击就可以了
      

  3.   

    except
    on edatabaseerror do adoquery1.ExecSQL {这里好像有问题吧。但于楼主报错的地方还是无关的。}
    end DBnavigator和DBgrid只需要设置成同一个datasource,并不需要任何代码,功能均可实现了。