一次显示1到N条,然后我按“下一页”Button,然后就从N+1显示!

解决方案 »

  1.   

    简单用我的函数:
      //------------------------------------------------------------------------------
    //过程名:PrePage ,NextPage
    //功能: 数据集翻页显示
    //说明:ID为数据表ID
    //创建人:CWJ
    //创建日期:02-01-18
    //
    //------------------------------------------------------------------------------procedure PrePage(CurrClientDataSet: TClientDataSet;
      FYInfo: QueryDataInfo; ID: string);
    var
      StrSql            : string;
      n, k, CurrID, tem : integer;
    begin
      if FYInfo^.CurrPage = 1 then begin
        messageShow('对不起,你已经在第一页了。', '系统提示', 1000);
        exit;
      end;
      CurrID := FYInfo^.CurrPage - 2;  if CurrID < -1 then begin
        messageShow('对不起,你已经在第一页了。', '系统提示', 1000);
        exit;
      end;
      tem := CurrID;
      if CurrID = -1 then begin
        CurrID := 0;
      end;  Screen.Cursor := crHourGlass;
      with CurrClientDataSet do
      begin
        StrSql := CommandText;
        //去掉order by 子句
        n := pos('order by', lowerCase(StrSql));
        if n > 0 then StrSql := copy(StrSql, 1, n - 1);    n := pos('and ' + LowerCase(ID), lowerCase(StrSql));
        if n > 0 then StrSql := copy(StrSql, 1, n - 1);    k := pos(lowerCase(ID), lowerCase(StrSql));
        if k > 0 then begin
          k := pos('where', lowerCase(StrSql));
          StrSql := copy(StrSql, 1, k - 1);
        end;    n := pos('where', lowerCase(StrSql));
        if n > 0 then StrSql := StrSql + format(' and ' + ID + ' > %d', [FYInfo^.RecordID[CurrID]])
        else begin
          StrSql := StrSql + ' where ' + format(ID + ' > %d', [FYInfo^.RecordID[CurrID]]);
        end;
        DisableControls;
        Close;
        CommandText := StrSql;
        open;
        if tem >= -1 then begin                                           //不是第一页
          last;
          FYInfo^.RecordID[FYInfo^.CurrPage - 1] := FieldByName(ID).asInteger;
          FYInfo^.CurrPage := FYInfo^.CurrPage - 1;
          first;
        end;
        EnableControls;
      end;
      Screen.Cursor := crDefault;
    end;