WINDOWS2000 
DB2 UDB 6
DELPHI 7
cds->DatasetProvider->TQuery,
AllowCommandText=True;
UpdataMode=umKeyOnly;
ResolveDataset=False;程序是这样的,
with cds do
begin
 //添加数据
 Append;
 FindField('id')= 1;
 Post;
 //添加数据结束
 if ApplyUpdates(0)>0 then raise Exception.create('...');
end;
正确
如果把上面
 //添加数据
 Append;
 FindField('id')= 1;
 Post;
 //添加数据结束
的部分多来一遍就,General SQL error,

解决方案 »

  1.   

    哦,你说这个问题,那个地方不应该是1,而是nextid的,不是主键冲突的问题,
    我把中间的xmldata抓下来了,你看一下
    http://211.95.170.17/niL/1.xml
    就是这样的更新,结果出现错误了
      

  2.   

    你的主键冲突,,解决办法:
    1。可以不用ID当主键。
    2。将:Append;
     FindField('id')= 2;
     Post;
    改写为2
      

  3.   

    晕,我只是随便写了个FindField().
    这样,中间改成这样
    Append;
    FindField('x') := 32;
    Post;
    他不对
      

  4.   

    不会吧,我才测试了你写的程序,没出现问题呀!!
    insert;
    fieldbyname('x'):=32;
    post;
    你试试!
      

  5.   

    还是没对,
    我作测试如下
    database->query->provider->cds
    cds.commandtext: select * from table1
    open
    添加一条记录,apply,成功
    添加两条记录,apply,失败,
    将刚才添加的记录删除一条,再提交,成功,
    快郁闷死了,
      

  6.   

    问题可能找到了,
    同样的程序,在ACCESS下是正确的,DB2 UDB 6 下不正确
      

  7.   

    你将CDS的COMMANDTEXT设置为空,,一切的数据基有应用端打开,不会出现你说的现象。
    测试(sql server 2000);
      

  8.   

    试了一下,还是不行,应该是udb6和cds的兼容问题,空了再测试一下udb8
    感谢楼上各位,
    结贴了