一般情况下该问题是出在索引上!
BORLAND的数据库默认要建索引,而且最好是要有主索引!其它的可能没有必要!这种情况是很难说,BDE可以连接多种数据库,所以出现这种问题也可以原谅!

解决方案 »

  1.   

    谢谢hank
    你的答案没有解决我的问题,可以保证具备主索引
    我的环境是:win2000 c/s,delphi5,sql server7
    工作过程如下: 
      首先建立一临时表,然后copy 一部分数据进入,再用table将它open,
      但不能编辑,无论autoedit或table1.edit都回触发上述错误
      并且尝试将一切与该table联系的edit组件全部撤消,仅仅保留一个dbgrid都不行
      

  2.   

    这种情况我以前遇到过.
    你是不是在Table的一些事件中写了对数据表进行操作的代码?比如OnNewRecord、OnBeforeOpen等?
      

  3.   

    开始是没有看明白你的意思,刚才我试了一下,没有任何问题,我的是:
    Win98第二版,Delphi5,Sql-SERVER2000,MDAC2.6!
    你把MDAC升级到2.6再看一下!
    我是通过ADO连接的,你用的什么?测试代码为:
    ADOQuery1.SQL.Add('create table Plax(CODE varchar(10) NOT NULL,COMPELL varchar(8), SEX bit NOT NULL,BIRTH smalldatetime NULL)');
    ADOQuery1.ExecSQL;
    ADODataSet1.CommandText:='select * from Plax';
    ADODataSet1.Open;
      

  4.   

      谢谢!
      我用的是BDE,不过其实这种问题也是有时出现有时正确的。
      我的操作是:建立一临时表,用一个tquery向其中COPY一些记录,然后用一个table来
    打开,这样就不能编辑以前用query追加的记录
      后来我使用该table.insertrecord方法追加这些记录,一切正常
      虽然问题解决,但仍想知道原来方法的错误根源
      

  5.   

    我想原因是因为TQuery运行完了后,没有关闭的原因,所以Table不能对这些记录操作
    一般TQuery的操作过程是
    TQuery.Close;  
    TQuery.SQL.Clear;
    TQuery.SQL.Add('sql语句');
    TQuery.SQL.Open;
    书上说(Borland说)在执行一个Query时要先Close,这话没错,要不有时会出现问题
    同理这样执行完了也要关了Query,然后再用Table连接数据库,我想就没有问题了。