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 ...
随机推荐
- Jenkins系列——定时构建
1.环境说明 操作系统:win7旗舰版64bit jdk:sun JDK1.7.0_80 64bit tomcat:apache-tomcat-8.0.41 jenkins:2.32.3LST 本系列 ...
- 10分钟入门spark
Spark是硅谷各大公司都在使用的当红炸子鸡,而且有愈来愈热的趋势,所以大家很有必要了解学习这门技术.本文其实是笔者深入浅出hadoop系列的第三篇,标题里把hadoop去掉了因为spark可以不依赖 ...
- java:替换字符串中的ASCII码
可对照查看网盘ASCII表http://yunpan.cn/cyxg4wQjQaGEQ (提取码:8b29) public static void main(String[] args) { // / ...
- 云计算基础 (redhat7介绍及相关配置)
redhat7简介 新版本的rhel7不再对32位架构的支持 引导程序: GRUB2,比之前的GRUB更强大,GRUB2支持bios,efi和openfiremware GRUB2支持mbr分区表和g ...
- dojo中取查询出来的地市维表数据的id
1.页面中引入隐藏域 <input type="hidden" id="area_desc"/> 2.通过在属性中设置 onchange:funct ...
- VxWorks 引导程序
前言:vxworks 的一些文件,如 usrconfig.c 在 config,comp目录中均有出现,因编译方式而选择某一个文件,命令行方式采用 config 目录文件,tornado 图形界面配置 ...
- AlarmManager(全局定时器/闹钟)详解
AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.指定时长或以周期形式执行某项操作.通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似.都有两种相似的 ...
- Excel 2010高级应用-气泡图(八)
Excel 2010高级应用-气泡图(八) 基本操作如下: 1.新建空白文档,并命名为气泡图,找到插入中的气泡图样 2.在其他图表中找到气泡图图样 3.单击气泡图图样,生成空白气泡图框 4.在气泡图图 ...
- freemarker自定义标签报错(五)
freemarker自定义标签 1.错误描述 六月 05, 2014 11:40:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...
- IOS开发之XCode学习010:定时器和视图对象
此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能: 1.通过点击"启动定时器"按钮 ...