我用三层开发,服务器端用的是adoquery,客户端是DCOMConn+clientdataset代码如下
  with cdsPacklistExe do
  begin
    close;
    CommandText :=
      'Insert ti_packing_list ...';
    Execute;
    applyupdates(0);
  end;
delphi报告Cannot perform this operation on a closed dataset!!但是事实上已经将记录insert进sql server 2000,可以在sql server中看到.
cmommandtext中的sql语句也在sql客户端通过测试的.其对应的dataproviderset的
poAllowCommandText也设置过了.请问会不会是delphi的一个bug,我看到有很多人建议安装ado pack2 for delphi5,
我用的delphi 6

解决方案 »

  1.   

    确定是哪句出错吗?
    我一般用connection执行无返回结果的SQL。
    发生这种情况是先关记录集再赋值SQL语句。
      

  2.   

    >>applyupdates(0);
    此举多余,删!!
      

  3.   

    请问是不是用commandtext就不需要用applyupdates了,因为这是直接操作数据库
      

  4.   

    你如果是对cds进行insert,edit,delete等等操作,才需要applyupdates
      

  5.   

    谢谢了, BoningSword
    我前几天用commandtext= 'select .. ' ,老是报  Cannot perform this operation on a open dataset!! 然后我将对应的providerdataset的sql语句情空,就不出错了.
    今天我又将providerdataset的sql语句写上,竟然也不出错了.我真是ft.请问你遇到过这个问题吗?
    delphi的ADO需要装pack吗?
      

  6.   

    Ado就算有bug也不会这样烂的。你还是记得数据集不用了就close掉。