我是打算双击DBGrid的某一行来显示其详细页面的,不过老是第一次双击没问题,第二次双击就出错:
ADODataSet2 : cannot perform this operation on a closed dataset.
编译了运行是问题,但是第二次双击就弹出错误窗口:ADODataSet2 : cannot perform this operation on a closed dataset.确认后,不过还能运行?就是多了要确认一个错误信息procedure TForm2.DBGrid1DblClick(Sender: TObject);
begin
  ADODataSet1.open;
  ADODataSet2.close;
  Adodataset2.commandText:='select * from report where CNo =  :CNo';
  ADODataSet2.Parameters.ParamByName('CNo').Value:=
    ADODataSet1.FieldByName('CNo').Value;
  ADODataSet2.Open;
  ADODataSet2.Edit;
  Form1.ShowModal;
  
end;end;

解决方案 »

  1.   

    这里没问题,Form1里边干嘛了?
    可能DataSet没post 再次操作失败
    再者ADODataSet2 : cannot perform this operation on a closed dataset.来自Form1上的ADODataSet2
      

  2.   

    Form1.ShowModal;之后,我 只是 用了Form1.Close;,然后回到Form2,再次击DBGrid的某一行后,就出错:ADODataSet2 : cannot perform this operation on a closed dataset.
      

  3.   

    只能说明dataset2没有打开……
      

  4.   

    一般不是Bug.
    form1
    creat show close 什么得都干吗了?
      

  5.   

    一定是对关闭的adodataset2做了操作,查询,删除,添加,
      

  6.   

    这可能是一个BUG,我以前遇到过。
    原因是这样:
    你的数据集在一个窗体,而数据控件在另一个窗体,这样就极其容易产生上面的情况,甚至会出现无法刷新的情况,但它未必每次都出现;
    解决的方法是将ADODataSet2放在Form1上。
      

  7.   

    我觉得你把你的数据集都放到一个公共的datamodule上试试看 看你提供的这些代码确实看不出什么问题的