Can not perform this operation on a closed dataset-- delphi

williams   2010-5-16 14:38 楼主
多物料进出仓系统  在添加物料时出现 这个错误提示:Can not perform this operation on a closed dataset

if RbtnMulti.Checked = true then //多物料
  begin
      //构造字符串
      rec_set := '';
      DBGridTmpView.DataSource.DataSet.First;
      if DBGridTmpView.DataSource.DataSet.FieldByName('gid').AsString = '' then
      begin
          showmessage('请输入信息!');
          exit;
      end;
      while not DBGridTmpView.DataSource.DataSet.eof do
      begin
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('gid').AsString + '`';
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('gname').AsString + '`';
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('gunit').AsString + '`';
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('iosize').AsString + '`';
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('iomoney').AsString + '`';
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('iodate').AsString + '`';
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('remarks').AsString + '`';
        rec_set := rec_set + DBGridTmpView.DataSource.DataSet.FieldByName('uid').AsString + '`';
        rec_set := rec_set + ';';
        DBGridTmpView.DataSource.DataSet.Next;
      end;
      //showmessage(rec_set);
      with DataMo.ADOSProcMGio do
      begin
        close;
        Parameters.ParamByName('@m_rec_set').Value := rec_set;
        if RbtnPush.Checked = true then
         Parameters.ParamByName('@m_iomark').Value := '1'
        else
         Parameters.ParamByName('@m_iomark').Value := '0';
        Parameters.ParamByName('@m_stat').Value := '';
        Parameters.ParamByName('@m_msg').Value := '';
        execProc;
        pmsg := Parameters.ParamByName('@m_stat').Value;
        billno := Parameters.ParamByName('@m_msg').Value;
        showmessage(pmsg+ ' 单号:' + billno);
        RbtnSingle.Checked := true;
        RefreshTables(billno,'');
      end;
  end;
请大侠帮帮忙!

本文来自eeworld博客:http://blog.eeworld.net/eallern/archive/2009/09/07/4529575.aspx

回复评论 (3)

不能运行这个操作一个数据集中在


设置断点跟踪看看,那句的问题呀,

with DataMo.ADOSProcMGio do  
  begin  
  close;  

随便就close 了 ?

就一个字,太乱了,

估计你错误的不只一个地方,看看库 字段类型吧,
点赞  2010-5-17 00:08
楼主 先好好进行下分步 仿真,

根据每个模块的仿真图,好好分析下时序 和对应的逻辑是否正确吧、
点赞  2010-5-17 09:07
   程序看不懂。。
点赞  2010-5-17 09:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复