DBGrid1的数据集由Table1提供,Table1的Tablename初始为:rs_temppay
 其中在Table1的afterpost事件中:table1.refresh
 其实我就是想实现:DBGrid1中输入数据 然后直接更新到后台数据中。
还有一个ComboBox1控件用来决定Table1连接后台数据中哪个表。
在ComboBox1的change事件中,切换Table1所连接表,
事件:
  case combobox1.itemindex of
       0:begin
           table1.active:=false;
           table1.tablename:='rs_temppay';
           table1.active:=true;
           table1.edit;
         end; 
       1:begin
           table1.active:=false;
           table1.tablename:='rs_table';
           table1.active:=true;
           table1.edit;
         end;
问题:在没有触发combobox1的change事件时可以修改DBGrid1中各字段的值,也能反应到后台数据库
     但在触发combobox1的change事件后。报错:'Table does not support this operation because it is not uniquely indexed'
     即使我所的表和初始表为同一个表时也会报这个错。
   为什么报这个错误!我建了一个索引是唯一的。
  怎么达到我想要的结果。

解决方案 »

  1.   

    是不是还有其他的需要是唯一索引的字段不是唯一索引
    另外我觉得要实现你的功能
    只需要在form的onclosequery里
    加句  if table1.State in [dsEdit,dsInsert] then Post;
    就行
      

  2.   

    你在事件On show哪边让他Fasle;
      

  3.   

    TO qizhanfeng(glacier) 
     我想不会是我的索引的问题,因为我不触发combobox1的change事件就可以修改且能更新到后台数据库.
    TO jiang5460(巴山夜雨) 
       不行。
    大家顶顶吧!急啊~~~~~~~~~~~~~~~~~
      

  4.   

    试试 lockTable ,和UnlockTable