Adodataset1.Active:=false;
  Adodataset1.CommandText:='update  FreqTable set 序号=序号*10 where 序号<10';
Adodataset1.Active:=false;错误提示为:'不支持从单一执行返回多个记录集'
用的access数据库,如果是sql数据库就没有这个问题用adodataset能不能执行修改或者插入记录啊??

解决方案 »

  1.   

    Adodataset1.Active:=false;  
       Adodataset1.CommandText:='update    FreqTable  set  序号=序号*10  where  序号<10';  
    Adodataset1.Active:=true;不好意思,刚才代码错了
      

  2.   

    Update不返回记录集,不要用adodataset来执行
    要用adocommand或adoquery,调用execute方法执行不返回记录集的SQL
      

  3.   

    添加了adoquery
    确实是改了过来,但是接着用adodataset1查询的时候,dbgrid中还是原来的数据,
    怎样才能让它及时得到更新?
      

  4.   

    用adoquery1.ExecSQL, update语句不返回数据集,不能用Open(Active=True)来执行。
      

  5.   

    另外你最好在字段名和表名外面加上方括号,如'update    [FreqTable]  set  [序号]=[序号]*10  where  [序号]<10'免得Access出错。
      

  6.   

    TO:rodgerkong(Rodger)
    用adoquery1.ExecSQL, update语句不返回数据集,
    with Adoquery1 do
     begin  
       Close;
       SQL.Clear;
       Add('update  '+FreqTable+' set 有效期=dateadd("yyyy",1,有效期) where 有效期<=now');
      ExecSQL;
      Close;
       SQL.Clear;
       Add('select * from  '+FreqTable where 有效期<=now');
      open;
      end这样查询的结果并不是更新后的结果,但是可以确定的是更新成功了,
    更新成功后触发了什么事件啊?把查询语句放在什么地方才能更新完成后接着显示新的数据集啊??
      

  7.   

    ADOCommand1.CommandText:='update FreqTable set 序号=序号*10 where 序号<10';
    ADOCommand1.Execute;
      

  8.   

    ADOCommand1.Execute; 与 Adoquery1.ExecSQL的功能是一样的吧,
    能解决我的问题么?
      

  9.   

    没法用SQL语句在Update之立刻返回数据集,用ADOQuery吧,但是只能逐记录更改,批量处理还是SQL语句快,不能两全。