inc(row); 你不断inc,要是循环了6次之后怎么办呢?你应该对它作复位(Reset)处理另外,你可以对上面的if部分代码简简一下,那样真的很~~~~~

解决方案 »

  1.   

    第一次用inc,不知如何复位,放在何处?
    谢谢。
      

  2.   

    这样改一下,更简单些
    begin
       rep_infor.resultQuery.Close;
       rep_infor.resultQuery.SQL.Clear;
       rep_infor.resultQuery.SQL.Add('select  top '+resultcombobox3.Text+' 号码,姓名,性别,单位,项目名称,成绩,得分 from perinfor_input');
       rep_infor.resultQuery.SQL.Add('where 项目名称=:items and 性别=:sex order by 成绩 desc');
        rep_infor.resultQuery.Parameters.ParamByName('items').Value:=sj;
        rep_infor.resultQuery.Parameters.ParamByName('sex').Value:=xb;
        rep_infor.resultQuery.Open;
       end;
      end;
     rep_infor.resultQuery.First;
     rep_infor.resultQuery.Edit;
    begin
       while not rep_infor.resultQuery.Eof do
       begin
       inc(row);
       rep_infor.resultQuery.FieldByName('得分').AsInteger:=7-row;
       if row=6 then row:=0;
       end;
       rep_infor.resultQuery.Post;
       rep_infor.resultQuery.Next;
    end; 
      

  3.   

    你的row怎样来的?你可以把if语句该为:
    case row of
    1:……;
    2:……;
    ……
    6:……
    else
    row:=初值;
    end;
      

  4.   

    最多只会查询出6条记录(Select Top 6 ...)怎么会“循环了6次之后”呢?如果row是局部变量,根本不需要复位。
    很多DBMS的“排序查询”(带有Oder by)是不可修改的,SQL Server好象就是如此。最好改用Update语句或改用UpdateSQL控件进行修改。     ____     ____
         \ p \   / g /
          \ l \_/ n /
           \ a   o /
            \ i s /
             \ n /
              \_/
      

  5.   

    我用的是access数据库,也不行吗。