在一个循环语句中,查出第一条记录,将select出来的内容发送出去,然后将该表的FLAG字段改为1,但是运行到下面代码时总是报错。
代码如下: if  query1.Active then query1.close;
             query1.sql.clear;
             query1.sql.Add('update plkt_rec');
             query1.sql.add('set flag=''1'' where username=username[i]);
             
         try
             query1.ExecSQL;
             database1.Commit;
         except
             database1.Rollback;
         end;
             statusbar1.Panels[1].Text:='ÒѾ­´¦ÀíÁË:'+inttostr(i)+'¸öÓû§...';
             refresh;
错误提示:no user transaction is currently in progress
请高手帮忙

解决方案 »

  1.   

    你用了database1.commit,却没有写在哪里开始事务
      

  2.   

    我如果想提交UPDATE,只用 query1.ExecSQL;数据库是不是能commit?
      

  3.   

    database1.begintrance
             try
                 query1.ExecSQL;
     if  query1.Active then query1.close;
                 query1.sql.clear;
                 query1.sql.Add('update plkt_rec');
                 query1.sql.add('set flag=''1'' where username=username[i]);
                 
                 database1.Commit;
             except
                 database1.Rollback;
             end;
      

  4.   

    no user transaction is currently in progress看这句这明白了撒,明显就是事务没写对
      

  5.   

    事务的一般使用方式
    database1.begintrance;
    try
      ...
      database1.Commit;
    except
      database1.Rollback;
    end;