我是要从任意一行起,对特定一列的连续的n个值进行改变。我的代码是这样:
  for i:=1 to n do      
     begin
     showmessage(now_t_num) ;  // now_t_num 当前的车票号码
    dm.Query_bz.Close;
    dm.Query_bz.SQL.clear;
    dm.Query_bz.sql.Add('update t_ticket');
    dm.query_bz.sql.add('set f_bz=0');
    dm.Query_bz.sql.add('where f_ticket_num='''+now_t_num+'''');
    dm.query_bz.execsql;
    now_t_num:=inttostr((strtoint(now_t_num)+1));  //循环条件的改变
     end;
代码执行以后,只能改变选中的第一行的数据~~
不知道应该怎么修改才可以达到目的~~谢谢各位大虾了~

解决方案 »

  1.   

    恩,就是这一段阿~~~
    now_t_num是指定的开始的车票号码 showmessage(now_t_num) ; 这个是我当时为了看看车票号有没有改变加的,没有意义~~~
    车票号码是在改变的
    但是对数据库的操作不成功
      

  2.   

    SQL不熟  你可以SELECT * 一个数据集 然后做判断 如果符合条件 就直接改字段值 然后 QUERY。FRIOR   
    方法是笨了点 :)
      

  3.   

    这种方法对数据库的SQL重用不好,可以改为以下挷定变量的方法,并显示的提交一次,试试:
     for i:=1 to n do      
         begin
         showmessage(now_t_num) ;  // now_t_num 当前的车票号码
        dm.Query_bz.Close;
        dm.Query_bz.SQL.clear;
        dm.Query_bz.sql.Add('update t_ticket');
        dm.query_bz.sql.add('set f_bz=0');
        dm.Query_bz.sql.add('where f_ticket_num=:num');
        dm.Query_bz.ParamByName('num').Asinteger:=now_t_num;
        dm.query_bz.execsql;
        dm.Query_bz.Close;
        dm.Query_bz.SQL.clear;
        dm.Query_bz.SQL.Add('Commit');
        dm.Query_bz.ExecSQL;
        now_t_num:=inttostr((strtoint(now_t_num)+1));  //循环条件的改变
        end;
      

  4.   

    那位指点一下~~急要~~ sccyzhi(富曲) 你的阿办法不行阿~~~~~