两个窗体,通过同一个clientdataset,执行下面的语句,只是查询的不是同一个表。打开一个窗体后,运行正常,关闭这个窗体,打开另一个窗体,报字段未找到的错误,如何解决?  if not(MYDB.BMainClientDataSet.Active) then mydb.BMainClientDataSet.Active:=true;
  with MYDB.BMainClientDataSet do
    begin
       close;
       CommandText:='SELECT * FROM erp_zs_sfbz';
       try
       open;
       except
       application.MessageBox('语句出现错误,请检查!','提示',0);
       end;
    end;

解决方案 »

  1.   

    是不是clientdataset添加有固定的字段,那样字段对不上会报错
      

  2.   

    if   not(MYDB.BMainClientDataSet.Active)   then   mydb.BMainClientDataSet.Active:=true;
    没必要要这个,估计是你在一个窗体上执行了一条SQL语句,关闭窗体后,在另外一个窗体上的DBGRID之类的数据感知控件绑定了BMainClientDataSet上的字段,你首先就执行了
    if   not(MYDB.BMainClientDataSet.Active)   then   mydb.BMainClientDataSet.Active:=true;
    那就用的是上一个窗体上执行的结果集,所以就会出现说 字段未找到的错误。
      

  3.   

    每次打开窗体,clientdataset都重新创建一遍看看
      

  4.   

    clientdataset本来就是内存表,多放几个有何妨?