delphi oracle 分页,delphi简单的分页实现(高手可以不看)

1 unitUnit3;2

3 interface

4

5 uses

6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,7 Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, RzDBGrid, ExtCtrls, RzPanel, RzSplit, DBGridEhGrouping, GridsEh,8 DBGridEh;9

10 type

11 TForm3 = class(TForm)12 btnFirstPage: TButton;13 btnNextPage: TButton;14 btnPreviousPage: TButton;15 btnLastPage: TButton;16 ADOQuery1: TADOQuery;17 ADOConnection1: TADOConnection;18 DataSource1: TDataSource;19 Edit1: TEdit;20 lblCount1: TLabel;21 lblCount2: TLabel;22 RzSplitter1: TRzSplitter;23 DBGrid1: TDBGridEh;24 procedurebtnFirstPageClick(Sender: TObject);25 procedureFormCreate(Sender: TObject);26 procedurebtnNextPageClick(Sender: TObject);27 procedurebtnPreviousPageClick(Sender: TObject);28 procedurebtnLastPageClick(Sender: TObject);29 private

30 {Private declarations}

31 public

32 {Public declarations}

33 end;34

35 var

36 Form3: TForm3;37 num2: integer;38

39 implementation

40

41 {$R *.dfm}

42

43 //第一页

44 procedureTForm3.btnFirstPageClick(Sender: TObject);45 begin

46 adoquery1.SQL.clear;47 adoquery1.SQL.add('select top' + Edit1.Text + '* from TableName order by id');48 adoquery1.Open;49 num2 := 0;50 end;51

52 //最后一页

53 procedureTForm3.btnLastPageClick(Sender: TObject);54 var

55 val1 :Integer;56 val2 :Integer;57 begin

58 adoquery1.sql.clear;59 adoquery1.SQL.Add('select count(*) as countnum from TableName');60 adoquery1.Open;61 val1 := (adoquery1.FieldByName('countnum').AsInteger) modStrToInt(Edit1.Text);62 val2 := (adoquery1.FieldByName('countnum').AsInteger) -StrToInt(Edit1.Text);63 adoquery1.SQL.Clear;64 num2 :=val2;65 if val1 = 0then

66 begin

67 adoquery1.SQL.Add('select top' + Edit1.Text + '* from TableName where id not in(select top' + IntToStr(val2) + 'id from TableName order by id) order by id');68 end

69 else

70 begin

71 adoquery1.SQL.Add('select top' + IntToStr(val1) + '* from TableName where id not in(select top' + IntToStr(val2) + 'id from TableName order by id) order by id');72 end;73 adoquery1.Open;74 end;75

76 //下一页

77 procedureTForm3.btnNextPageClick(Sender: TObject);78 begin

79 adoquery1.SQL.clear;80 adoquery1.sql.add('select count(*) as countnum from TableName');81 adoquery1.Open;82 inc(num2, StrToInt(Edit1.Text));83 if num2 >= adoquery1.FieldByName('countnum').AsInteger then

84 begin

85 num2 := trunc(adoquery1.FieldByName('countnum').AsInteger / StrToInt(Edit1.Text)) *StrToInt(Edit1.Text);86 end;87 adoquery1.SQL.clear;88 adoquery1.SQL.Add('select top' + Edit1.Text + '* from TableName where id not in(select top' + inttostr(num2) + 'id from TableName order by id) order by id');89 adoquery1.Open;90 if DBGrid1.DataSource.DataSet.RecordCount <= 0 then

91 begin

92 adoquery1.SQL.clear;93 adoquery1.SQL.Add('select top' + Edit1.Text + '* from TableName where id not in(select top' + inttostr(num2-StrToInt(Edit1.Text)) + 'id from TableName order by id) order by id');94 adoquery1.Open;95 end;96 end;97

98 //上一页

99 procedureTForm3.btnPreviousPageClick(Sender: TObject);100 begin

101 dec(num2, StrToInt(Edit1.Text));102 if num2 >= StrToInt(Edit1.Text) then

103 begin

104 adoquery1.SQL.clear;105 adoquery1.SQL.Add('select top' + Edit1.Text + '* from TableName where id not in(select top' + inttostr(num2) + 'id from TableName order by id) order by id');106 adoquery1.open;107 end

108 else

109 begin

110 inc(num2, StrToInt(Edit1.Text));111 adoquery1.sql.clear;112 adoquery1.SQL.Add('select top' + Edit1.Text + '* from TableName order by id');113 adoquery1.Open;114 end;115 end;116

117 procedureTForm3.FormCreate(Sender: TObject);118 begin

119 ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=数据库用户名;Initial Catalog=数据库名字;PassWord=数据库密码;Data Source=数据库服务器IP';120 ADOConnection1.Connected :=True;121 adoquery1.Connection :=adoconnection1;122 adoquery1.SQL.clear;123 adoquery1.SQL.add('select top' + Edit1.Text + '* from TableName order by id');124 adoquery1.Open;125 datasource1.dataset :=adoquery1;126 dbgrid1.DataSource :=datasource1;127 end;128

129 end.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值