用AdoQuery分页 实例


今晚在csdn论坛上看到一个网友在问分页,就随便写了一段代码,如有不当之处,还请见谅。

首先在窗体上放个listview,两个button,一个label,一个adoquery,一个adoconnection
然后用adoconnection建立一个连接

unit unit1;

interface

uses
  windows, messages, sysutils, variants, classes, graphics, controls, forms,
  dialogs, db, adodb,grids, dbgrids, stdctrls, comctrls;

type
  tform1 = class(tform)
    button1: tbutton;
    adoconnection1: tadoconnection;
    adoquery1: tadoquery;
    listview1: tlistview;
    label1: tlabel;
    button2: tbutton;
    procedure formcreate(sender: tobject);
    procedure button1click(sender: tobject);
    procedure button2click(sender: tobject);
  private
    { private declarations }
    procedure page_count;
  public
    { public declarations }
  end;
var
  form1: tform1;
  page: integer;
implementation

{$r *.dfm}

procedure tform1.formcreate(sender: tobject);
var
  listitem:tlistitem;
  i:integer;
begin
  with adoconnection1 do
  begin
    connectionstring := ´连接串´;
    open();
  end;
  page := 0;
end;

procedure tform1.page_count;
var
  i:integer;
  listitem:tlistitem;
begin
  listview1.clear;
  with adoquery1 do
  begin
    connection := adoconnection1;
    sql.clear;
    sql.add(´select a,b from tmplive´);
    open;
    if page = 0 then page := 1;
    if page > recordset.recordcount then page := recordset.recordcount;
    recordset.pagesize := 10;
    recordset.absolutepage := page;
    for i:= 1 to recordset.pagesize do
    begin
      listitem := listview1.items.add;
      listitem.subitems.add(recordset.fields.item[0].value);
      listitem.subitems.add(recordset.fields.item[1].value);
      next;
      if recordset.eof then exit;
    end;
  end;
end;

procedure tform1.button1click(sender: tobject);
begin
  page := page+1;
  page_count;
  label1.caption := inttostr(page);
end;

procedure tform1.button2click(sender: tobject);
begin
    page := page -1;
    page_count;
    label1.caption := inttostr(page);
end;

end.

-----------------------------------ADOquery循环

 

var
  Lv_Count : Integer;
begin
Lv_Count := 0;
if not adoQuery1.isEmpty then
begin
  adoQuery1.First;
  while not adoQuery1.eof do
  begin
    Lv_Count := Lv_Count + 1;
    adoQuery1.next;
  end;
end;
end;

 


 

posted @ 2008-10-16 09:56  苔苔以苔苔以苔  阅读(629)  评论(0编辑  收藏  举报
猪先飞