我有如下语句:     With DataModule1.brtempQuery do       
      begin
        Close;
        SQL.Clear;
        SQL.Add('update t_br_temp set jbzmbh=NULL,jbzmmc=NULL');
        SQL.Add('Where jbzmbh=:jbzmbh');
        Params[0].AsString:=firstfzbh;
        execsql;
        Close;
      end;
 上面语句是在表t_br_temp中删除满足条件的字段jbzmbh,jbzmmc的相关记录,语句没问题,能够完成要求。可是由于是用execsql来执行,而execsql不返回记录指针,用open又不形。所以,接下来,我要用语句:DataModule1.brtempQuery.Next;老是出错,说是dataset closed,不知道如何修改???有没有语句使dataset 打开啊???救救小弟吧,急盼回帖啊!!!

解决方案 »

  1.   

    DataModule1.brtempQuery在最后一句中不是被close了吗?
      

  2.   

    ????是下面的意思?
    With DataModule1.brtempQuery do       
          begin
            Close;
            SQL.Clear;
            SQL.Add('update t_br_temp set jbzmbh=NULL,jbzmmc=NULL');
            SQL.Add('Where jbzmbh=:jbzmbh');
            Params[0].AsString:=firstfzbh;
            execsql;
            Close;
            SQL.Clear;
            SQL.Add('select * from t_br_temp');
            Open;
          end;
    或者你用updatebatch就不用这么麻烦了
      

  3.   

    execsql不能返回数据集,只能用来执行SQL命令。用Active:=True  或Open吧。
      

  4.   

    你更新完成后已经关闭了数据集,即使不关闭,你原有的数据集也释放了。建议Select和Update使用不同的数据集控件,就不会有这种问题了,控制也简单!