适合初学者,练习几个控件的使用

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简单的分页实现(高手可以不看)的更多相关文章

  1. 简单的分页存储过程,Json格式日期转换为一般日期

    简单的分页存储过程 CREATE PROC Paged @pageIndex INT, @pageCount INT OUTPUT, @pageSize INT AS DECLARE @count I ...

  2. jquery ajax json简单的分页,模拟数据,没有封装,只显示原理

    简单的分页,模拟数据,没有封装,显示原理,大家有兴趣可以自己封装,这里只是个原理过程,真正的分页也差不多是这个原理,只是请求数据不太一样,html部分: <!TOCTYPE HTML> & ...

  3. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  4. delphi 简单的删除字符串尾部数字的代码

    delphi  简单的删除字符串尾部数字的代码 方式一: function FilterShowName(const sName: String): String; var I: Integer; b ...

  5. WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效

    procedure TForm1.WMSysCommand(var Message: TWMSysCommand); var str: string; begin case Message.CmdTy ...

  6. MyBatis简单的增删改查以及简单的分页查询实现

    MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...

  7. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  8. AngularJS实现简单的分页功能

    本篇文章由:http://xinpure.com/angularjs-simple-paging-functionality/ 初学 AngularJS, 尝试着写一些小功能 代码逻辑写得略粗糙,仅仅 ...

  9. WPF最简单的分页控件

    背景:最近在写项目的时候需要写一个简单的分页功能,因项目需要,没有改为MVVM模式,只需要在后台实现 1.呈现效果如下: 接下来就来上代码,看看怎么实现的 1.界面代码 <StackPanel ...

随机推荐

  1. $_SERVER变量

    $_SERVER is an array containing information such as headers, paths, and script locations. The entrie ...

  2. JVM笔记6-垃圾回收概述

    JVM进行垃圾回收时要考虑哪的问题如下: 1.如何判定对象为垃圾对象? 1.引用计数法:在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,引用失效的时候,计数器的值就-1, ...

  3. docker学习笔记(二)

    一.常用Linux 命令 ls -a(同时列出隐含文件), -l(输出一个比较完整的格式,除每个文件名外,增加显示文件 类型.权限.硬链接数.所有者名.组名.大小(byte).及时间信息-----简化 ...

  4. 后台模拟请求 HttpHelper 序列化 MD5 时间戳

    使用场景 C# 服务器后台调用其他服务器并处理 场景 /// <summary> /// 获取用户信息 /// </summary> /// <param name=&q ...

  5. linux Nagios监控

    监控目标 监控目标主机分为四个部分 硬件资源 操作系统 数据库 应用软件 监控目的: 进行服务器性能调整前,知道调整什么,系统瓶颈在什么地方 被一部分必须同时监控,内容包括吞吐量,反应时间,使用率等 ...

  6. 使用static与const关键字时需要掌握的知识

    static:1.不考虑类,static的作用:    1)第一个作用:隐藏.使得全局变量和函数对其它文件不可见,同时避免了不同文件的命名冲突.    2)第二个作用:默认初始化为0.未初始化的全局静 ...

  7. R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 终于开始攻克并行这一块了,有点小兴 ...

  8. 问题解决了,可是为什么呢?could not find the main class.program will exitmain

    今天重新学习socket编写简单的在线聊天,简单功能实现的情况下,一时心血来潮便想要把这程序打成可执行的jar包,以便于在桌面直接双击运行. 参照自己之前写的那篇<>打好两个jar包以后却 ...

  9. MyEclipse10+Flash Builder4+BlazeDS+Tomcat7配置J2EE Web项目报错(一)

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...

  10. 求助:关于sql如何统计时间的问题

    三.现在我们假设应用计时分为app应用和web应用,需要考虑如下几个方面: (1)多时间段(2)表中有冗杂数据 (3)用户是在web端和app端都登陆,这种类型的重复时间段只能取其一 存在数据: 存在 ...