delphi简单的分页实现(高手可以不看)
适合初学者,练习几个控件的使用
1、先放一张界面控件布局:

4个button,2个label,1个edit,1个TRzsplitter(把界面分割成上下2部分),1一个adoquery,1个adoconnection,1个datdasource,1个DBgridEh(原生的dbgrid也可以)
2、双击窗体,编写连接数据库的代码:
procedure TForm3.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=数据库用户名;Initial Catalog=数据库名字;PassWord=数据库密码;Data Source=数据库服务器IP';
ADOConnection1.Connected := True;
adoquery1.Connection := adoconnection1;
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
datasource1.dataset := adoquery1;
dbgrid1.DataSource := datasource1;
end;
注意:adoconnection控件的LoginPrompt的属性值改为False(为什么是False自己可以去试一下)
3、双击 首页 按钮,编写代码:
//第一页
procedure TForm3.btnFirstPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
num2 := ;
end;
4、双击 上一页 按钮,编写代码:
//上一页
procedure TForm3.btnPreviousPageClick(Sender: TObject);
begin
dec(num2, StrToInt(Edit1.Text));
if num2 >= StrToInt(Edit1.Text) then
begin
adoquery1.SQL.clear;
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');
adoquery1.open;
end
else
begin
inc(num2, StrToInt(Edit1.Text));
adoquery1.sql.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
end;
end;
5、编写下一页 按钮 编写代码:
//下一页
procedure TForm3.btnNextPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.sql.add('select count(*) as countnum from TableName');
adoquery1.Open;
inc(num2, StrToInt(Edit1.Text));
if num2 >= adoquery1.FieldByName('countnum').AsInteger then
begin
num2 := trunc(adoquery1.FieldByName('countnum').AsInteger / StrToInt(Edit1.Text)) * StrToInt(Edit1.Text);
end;
adoquery1.SQL.clear;
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');
adoquery1.Open;
if DBGrid1.DataSource.DataSet.RecordCount <= then
begin
adoquery1.SQL.clear;
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');
adoquery1.Open;
end;
end;
6、双击 最后一页 按钮,编写代码:
//最后一页
procedure TForm3.btnLastPageClick(Sender: TObject);
var
val1 :Integer;
val2 :Integer;
begin
adoquery1.sql.clear;
adoquery1.SQL.Add('select count(*) as countnum from TableName');
adoquery1.Open;
val1 := (adoquery1.FieldByName('countnum').AsInteger) mod StrToInt(Edit1.Text);
val2 := (adoquery1.FieldByName('countnum').AsInteger) - StrToInt(Edit1.Text);
adoquery1.SQL.Clear;
num2 := val2;
if val1 = 0then
begin
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');
end
else
begin
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');
end;
adoquery1.Open;
end;
7、完整代码:
unit Unit3; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, RzDBGrid, ExtCtrls, RzPanel, RzSplit, DBGridEhGrouping, GridsEh,
DBGridEh; type
TForm3 = class(TForm)
btnFirstPage: TButton;
btnNextPage: TButton;
btnPreviousPage: TButton;
btnLastPage: TButton;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
Edit1: TEdit;
lblCount1: TLabel;
lblCount2: TLabel;
RzSplitter1: TRzSplitter;
DBGrid1: TDBGridEh;
procedure btnFirstPageClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnNextPageClick(Sender: TObject);
procedure btnPreviousPageClick(Sender: TObject);
procedure btnLastPageClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form3: TForm3;
num2: integer; implementation {$R *.dfm} //第一页
procedure TForm3.btnFirstPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
num2 := ;
end; //最后一页
procedure TForm3.btnLastPageClick(Sender: TObject);
var
val1 :Integer;
val2 :Integer;
begin
adoquery1.sql.clear;
adoquery1.SQL.Add('select count(*) as countnum from TableName');
adoquery1.Open;
val1 := (adoquery1.FieldByName('countnum').AsInteger) mod StrToInt(Edit1.Text);
val2 := (adoquery1.FieldByName('countnum').AsInteger) - StrToInt(Edit1.Text);
adoquery1.SQL.Clear;
num2 := val2;
if val1 = 0then
begin
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');
end
else
begin
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');
end;
adoquery1.Open;
end; //下一页
procedure TForm3.btnNextPageClick(Sender: TObject);
begin
adoquery1.SQL.clear;
adoquery1.sql.add('select count(*) as countnum from TableName');
adoquery1.Open;
inc(num2, StrToInt(Edit1.Text));
if num2 >= adoquery1.FieldByName('countnum').AsInteger then
begin
num2 := trunc(adoquery1.FieldByName('countnum').AsInteger / StrToInt(Edit1.Text)) * StrToInt(Edit1.Text);
end;
adoquery1.SQL.clear;
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');
adoquery1.Open;
if DBGrid1.DataSource.DataSet.RecordCount <= then
begin
adoquery1.SQL.clear;
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');
adoquery1.Open;
end;
end; //上一页
procedure TForm3.btnPreviousPageClick(Sender: TObject);
begin
dec(num2, StrToInt(Edit1.Text));
if num2 >= StrToInt(Edit1.Text) then
begin
adoquery1.SQL.clear;
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');
adoquery1.open;
end
else
begin
inc(num2, StrToInt(Edit1.Text));
adoquery1.sql.clear;
adoquery1.SQL.Add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
end;
end; procedure TForm3.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=数据库用户名;Initial Catalog=数据库名字;PassWord=数据库密码;Data Source=数据库服务器IP';
ADOConnection1.Connected := True;
adoquery1.Connection := adoconnection1;
adoquery1.SQL.clear;
adoquery1.SQL.add('select top ' + Edit1.Text + ' * from TableName order by id');
adoquery1.Open;
datasource1.dataset := adoquery1;
dbgrid1.DataSource := datasource1;
end; end.
delphi简单的分页实现(高手可以不看)的更多相关文章
- 简单的分页存储过程,Json格式日期转换为一般日期
简单的分页存储过程 CREATE PROC Paged @pageIndex INT, @pageCount INT OUTPUT, @pageSize INT AS DECLARE @count I ...
- jquery ajax json简单的分页,模拟数据,没有封装,只显示原理
简单的分页,模拟数据,没有封装,显示原理,大家有兴趣可以自己封装,这里只是个原理过程,真正的分页也差不多是这个原理,只是请求数据不太一样,html部分: <!TOCTYPE HTML> & ...
- 只是一个用EF写的一个简单的分页方法而已
只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...
- delphi 简单的删除字符串尾部数字的代码
delphi 简单的删除字符串尾部数字的代码 方式一: function FilterShowName(const sName: String): String; var I: Integer; b ...
- WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效
procedure TForm1.WMSysCommand(var Message: TWMSysCommand); var str: string; begin case Message.CmdTy ...
- MyBatis简单的增删改查以及简单的分页查询实现
MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- AngularJS实现简单的分页功能
本篇文章由:http://xinpure.com/angularjs-simple-paging-functionality/ 初学 AngularJS, 尝试着写一些小功能 代码逻辑写得略粗糙,仅仅 ...
- WPF最简单的分页控件
背景:最近在写项目的时候需要写一个简单的分页功能,因项目需要,没有改为MVVM模式,只需要在后台实现 1.呈现效果如下: 接下来就来上代码,看看怎么实现的 1.界面代码 <StackPanel ...
随机推荐
- PHP不使用array_merge函数实现一维数组合并
function array_mer() { $arrays = func_get_args(); //获取当前函数中传递进来的所有参数,也就是所有一维数组 // echo '<pre>' ...
- Spring cloud oauth2.0 access_token 永不失效设置方法
在AuthorizationServerConfigurerAdapter,重写一个TokenServices,注意这里的@Primary 非常重要,否则会有3个同类型的Bean,无法注入,会抛出以下 ...
- win10安装mongodb及配置 和 mongodb的基本使用(node环境)
mongodb安装 下载地址: https://www.mongodb.com/download-center 下载后,我们点击mongodb-win32-x86_64-2008plus-ssl-3. ...
- com.alibaba.druid.sql.parser.ParserException: syntax error, QUES %, pos 80 like报错解决
最近,把各应用的jdbc连接池统一从dbcp2改成了druid,运行时druid报sql解析错误,如下: select * from test where 1=1 &l ...
- eclipse hadoop1.2.0配置及wordcount运行
"error: failure to login"问题 http://www.cnblogs.com/xia520pi/archive/2012/05/20/2510723.htm ...
- java程序中执行HiveQL
这里是指java中执行hive或者hiveQL. 注意:而不是经常说的通过JDBC的方式连接Hiveserver2来执行查询.是在部署了hiveserver的服务器上执行hive命令.这样就可以将分析 ...
- 关于VS2013调试IIS应用源代码时无法进入断点的问题总结
调试无法进入断点 前言:今天再次遇到之前调试无法进入断点的问题,本来想不写呢觉得没什么只是又犯了同样的错误,但是我发现这个问题我分析起来还是挺费劲的,我仔细想了想原因, 是因为自己对之前的错误没有进行 ...
- 跨站请求伪造攻击 CSRF
摘录: 1.跨站点请求伪造 首先,什么是跨站点请求伪造? 跨站点请求伪造-CSRF(Cross Site Request Forgery):是一种网络攻击方式. 说的白话一点就是,别的站点伪造你的请求 ...
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- free 或delete后指针怎么样了
free()和delete()只是把指针所指向的内存释放掉,但是并没有把指针本身删除,也没有把指针置为NULL; #include<iostream> using namespace st ...