问题如下:
用ODBC配置了一个SQL SERVER 2000数据库xx,用Query1的DatabaseName指定为该数据库xx,将Query1选出的数据显示在DBGrid1中,然后在DBGrid1中修改数据,提交并更改数据库中表的内容。代码如下:
  DBGrid1.ReadOnly:=False;
  DBGrid1.Columns[0].ReadOnly:=True;
  DBGrid1.Columns[1].ReadOnly:=True;
  DBGrid1.Columns[2].ReadOnly:=True;
  DBGrid1.Columns[3].ReadOnly:=True;
  DBGrid1.Columns[4].ReadOnly:=True;
  DBGrid1.Columns[5].ReadOnly:=True;
  DBGrid1.Columns[6].ReadOnly:=False;
  DBGrid1.Columns[7].ReadOnly:=False;
  DBGrid1.Columns[8].ReadOnly:=False;
  DBGrid1.Columns[9].ReadOnly:=False;
  DBGrid1.Columns[10].ReadOnly:=False;
  Query1.Edit;  try
  if MessageDlg('是否确定提交成绩单?',mtConfirmation,[mbYes,mbNo],0)        =mrYes then
     begin
     Query1.Post;
     Query1.Refresh;
     end
  else
     DBGrid1.ReadOnly:=True;
  except
     on EDBEngineError do
     begin
        ShowMessage('Error!');
     end;
  end;
运行中出现问题:
当Query1的RequestLive属性为true时,出现错误“Table is read-only."
当Query1的RequestLive属性为false时,出现错误“Query1:Can not modify a read-only dataset.”
但当我使用Delphi7自带的Database Desktop建立了一个Paradox的数据库,用上述同样的代码,实现上述相同的功能,所唯一不同的是将Query1的RequestLive的属性设为ture,就不会出现任何错误,并在DBGrid和建立的数据库中都可修改成功.请各位高手帮助解决!!!不甚感激万分!!!

解决方案 »

  1.   

    SQLServer是远程的,不能通过这样的方式进行修改,只能以SQL语句的方式进行,如
    Query1.Active:=False;
    Query1.SQL.Clear;
    Query1.SQL.Add('Insert into xxx values.....');//语句不全,或'Update....
    Query1.ExecSQL;
      

  2.   

    添加一个Update控件,把query的Cachedupdate和Constrained属性都设成true在把updateobject设成刚才加入的Update控件;当修改时加一条语句,query1.edit;就可以修改了
      

  3.   

    我觉得应该将 li_zhifu(东北人) 和 yutaocool(酷鱼) ( )的方法合起来使用就比较好了。
      

  4.   

    gytyl(delphi混混) 
    你他妈的是不是男人啊?!啊!?
    我跟你真是冤家,今天我在三个贴子里回贴都碰到了你,你不是拷贝就是写“我觉得应该将 li_zhifu(东北人) 和 yutaocool(酷鱼) ( )的方法合起来使用就比较好了”这样的话!
    你闲着没事干啊你,你要是没事就到水园里去!!!别在这儿碍眼!!!楼下来的兄弟都去看看,这是今天的两个贴子,去看看 gytyl(delphi混混) 的答案
    http://expert.csdn.net/Expert/topic/1845/1845286.xml?temp=.2404444
    http://expert.csdn.net/Expert/topic/1844/1844487.xml?temp=.1095545
    对了还有这个贴子!我真是受不了了!!!!什么无耻的人都有!!我今天算是见识了!
      

  5.   

    你想要修改数据库的话,不要总是想到控制DBGRID
      

  6.   

    不好意思更正一下第二个网址,我他妈被气晕了
    http://expert.csdn.net/Expert/topic/1842/1842747.xml?temp=.8812067
      

  7.   

    你这个事件放在那里,是放在adoquery1的beforepost中吗