ADOQuery.RecordSet.PageSize := 100; for i := 1 to ADOQuery.RecordSet.PageCount do begin ADOQuery1.Recordset.AbsolutePage := i; end;
有自增id吗 按id划分纪录数
学习。 但我自己写了一段代码实现分页的。 用tlist和stringgrid来显示的。
学习。 但我自己写了一段代码实现分页的。 用tlist和stringgrid来显示的。
ADOQuery.RecordSet.PageSize := 100; for i := 1 to ADOQuery.RecordSet.PageCount do begin ADOQuery1.Recordset.AbsolutePage := i; end;//////////////// 大概就是这样子了, 给AbsolutePage赋值,即是你要取的页号
ADOQuery.RecordSet.PageSize := 100; for i := 1 to ADOQuery.RecordSet.PageCount do begin ADOQuery1.Recordset.AbsolutePage := i; end; 写在什么事件好那
使用存儲過程來操作 //----分页存储过程开始创建----------------------------------------------------------------------------------------------------------- IF EXISTS (SELECT name FROM sysobjects WHERE name = 'PageShowOne' AND type = 'P') DROP PROCEDURE PageShowOne GOCREATE Proc PageShowOne @PageSize int=10 ,--每页显示的记录数 @PageCurrent int=1 ,--当前要显示的页号 @FdName varchar(100)='' ,--主键名或者标识列名 @SelectStr varchar(2000)='', --select子句,不包含select关键字,如:*或者Id,UserId,UserName等。 @FromStr varchar(1000)='', --from子句,不包含from关键子,如:myTable或者myTable,yourTable @WhereStr varchar(2000)='', --Where子句,不包含where关键字,如空的,或者 id>2 等 @OrderByStr varchar(1000)='',--order by 子句,不包含order by 子句 ,如id desc,UserId asc 等 @CountRows int=0 output, --返回记录总数 @CountPage int=0 output --返回总页数 as --------定义局部变量--------- declare @Id1 varchar(20),@Id2 varchar(20) --开始和结束的记录号 declare @OrderBySqls varchar(1000) --order by 子句 declare @WhereSqls varchar(2000) --where 子句 declare @Sqls nvarchar(4000) --最终组合成的Sqls语句 declare @TmpStr varchar(2000) --临时 ---------------------------- if @OrderByStr <> '' set @OrderBySqls = ' order by '+@OrderByStr else set @OrderBySqls = '' -------- if @WhereStr <> '' set @WhereSqls = ' where ('+@WhereStr+')' else set @WhereSqls = '' -------- set @TmpStr = @WhereSqls --如果显示第一页,可以直接用top来完成 if @PageCurrent<=1 begin select @Id1=cast(@PageSize as varchar(20)) exec('select top '+@Id1+' '+@SelectStr+' from '+@FromStr+@WhereSqls+@OrderBySqls) goto LabelRes end --------------------------- select @Id1=cast(@PageSize as varchar(20)) ,@Id2=cast((@PageCurrent-1)*@PageSize as varchar(20)) ---------- if @WhereSqls <> '' set @WhereSqls = @WhereSqls + ' and (' + @FdName+' not in(select top '+@Id2+' '+@FdName+' from '+@FromStr+@WhereSqls+@OrderBySqls+'))' else set @WhereSqls = ' where ' + @FdName+' not in(select top '+@Id2+' '+@FdName+' from '+@FromStr+@WhereSqls+@OrderBySqls+')' ---------- set @Sqls = 'select top '+@Id1+ ' '+ @SelectStr+' from '+@FromStr+@WhereSqls+@OrderBySqls exec (@Sqls) ----------- LabelRes: -----返回总记录数 set @Sqls = 'select @a=count(1) from '+@FromStr+@TmpStr exec sp_executesql @sqls,N'@a int output',@CountRows output -----返回总页数 if @CountRows <= @PageSize set @CountPage = 1 else begin set @CountPage = @CountRows/@PageSize if (@CountRows%@PageSize) > 0 set @CountPage = @CountPage + 1 end return GO //----分页存储过程结束---------------------------------------------------------------------------------------//----Delphi7调用过程开始----------------------------------------------------------------------------------------首先在 public 中定义 i, RsCount: integer; 在frmMain中放置一个dbgrid , datasource, AdoStoredProc [name->sp], 和4个 Button, 设置好相关连接!procedure TfrmMain.btnFirstClick(Sender: TObject); begin i := 1; sp.ProcedureName := 'PageShowOne;1'; sp.Close; sp.Parameters.ParamByName('@PageSize').Value := 50; sp.Parameters.ParamByName('@PageCurrent').Value := i; sp.Parameters.ParamByName('@FdName').Value := '图纸编号'; sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数'; sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi'; sp.Parameters.ParamByName('@WhereStr').Value := ''; sp.Parameters.ParamByName('@OrderByStr').Value := '日期'; sp.Open; Label1.Caption := '记录总数:'+IntToStr(sp.Parameters.ParamValues['@CountRows']); Label2.Caption := '总页数:'+IntToStr(sp.Parameters.ParamValues['@CountPage']); RsCount := sp.Parameters.ParamValues['@CountPage']; Label3.Caption := '第 '+IntToStr(i)+ ' 页'; end;procedure TfrmMain.btnNextClick(Sender: TObject); begin if i >= RsCount then ShowMessage('已经是最后一页!') else i := i + 1; sp.ProcedureName := 'PageShowOne;1'; sp.Close; sp.Parameters.ParamByName('@PageSize').Value := 50; sp.Parameters.ParamByName('@PageCurrent').Value := i; sp.Parameters.ParamByName('@FdName').Value := '图纸编号'; sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数'; sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi'; sp.Parameters.ParamByName('@WhereStr').Value := ''; sp.Parameters.ParamByName('@OrderByStr').Value := '日期'; sp.Open; Label3.Caption := '第 '+IntToStr(i)+ ' 页'; end;procedure TfrmMain.btnPriorClick(Sender: TObject); begin if i > 1 then i := i - 1 else ShowMessage('已经是第一页了!'); sp.ProcedureName := 'PageShowOne;1'; sp.Close; sp.Parameters.ParamByName('@PageSize').Value := 50; sp.Parameters.ParamByName('@PageCurrent').Value := i; sp.Parameters.ParamByName('@FdName').Value := '图纸编号'; sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数'; sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi'; sp.Parameters.ParamByName('@WhereStr').Value := ''; sp.Parameters.ParamByName('@OrderByStr').Value := '日期'; sp.Open; Label3.Caption := '第 '+IntToStr(i)+ ' 页'; end;procedure TfrmMain.btnLastClick(Sender: TObject); begin i := RsCount; sp.ProcedureName := 'PageShowOne;1'; sp.Close; sp.Parameters.ParamByName('@PageSize').Value := 50; sp.Parameters.ParamByName('@PageCurrent').Value := i; sp.Parameters.ParamByName('@FdName').Value := '图纸编号'; sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数'; sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi'; sp.Parameters.ParamByName('@WhereStr').Value := ''; sp.Parameters.ParamByName('@OrderByStr').Value := '日期'; sp.Open; Label3.Caption := '第 '+IntToStr(i)+ ' 页'; end; //--------------调用结束-------------------------------------------------------------------------------------------------------------------- 來自:http://down.gmplay.com 理想下載!
ADOQuery.RecordSet.PageSize := 100; for i := 1 to ADOQuery.RecordSet.PageCount do begin ADOQuery1.Recordset.AbsolutePage := i; end; ------------------------------------------- 可是不明白这段代码应该放到哪里啊?
ADOQuery.RecordSet.PageSize := 100; for i := 1 to ADOQuery.RecordSet.PageCount do begin ADOQuery1.Recordset.AbsolutePage := i; end; 好像没反应
for i := 1 to ADOQuery.RecordSet.PageCount do
begin
ADOQuery1.Recordset.AbsolutePage := i;
end;
按id划分纪录数
但我自己写了一段代码实现分页的。
用tlist和stringgrid来显示的。
但我自己写了一段代码实现分页的。
用tlist和stringgrid来显示的。
for i := 1 to ADOQuery.RecordSet.PageCount do
begin
ADOQuery1.Recordset.AbsolutePage := i;
end;////////////////
大概就是这样子了,
给AbsolutePage赋值,即是你要取的页号
for i := 1 to ADOQuery.RecordSet.PageCount do
begin
ADOQuery1.Recordset.AbsolutePage := i;
end;
写在什么事件好那
//----分页存储过程开始创建-----------------------------------------------------------------------------------------------------------
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'PageShowOne' AND type = 'P')
DROP PROCEDURE PageShowOne
GOCREATE Proc PageShowOne
@PageSize int=10 ,--每页显示的记录数
@PageCurrent int=1 ,--当前要显示的页号
@FdName varchar(100)='' ,--主键名或者标识列名
@SelectStr varchar(2000)='', --select子句,不包含select关键字,如:*或者Id,UserId,UserName等。
@FromStr varchar(1000)='', --from子句,不包含from关键子,如:myTable或者myTable,yourTable
@WhereStr varchar(2000)='', --Where子句,不包含where关键字,如空的,或者 id>2 等
@OrderByStr varchar(1000)='',--order by 子句,不包含order by 子句 ,如id desc,UserId asc 等
@CountRows int=0 output, --返回记录总数
@CountPage int=0 output --返回总页数
as
--------定义局部变量---------
declare @Id1 varchar(20),@Id2 varchar(20) --开始和结束的记录号
declare @OrderBySqls varchar(1000) --order by 子句
declare @WhereSqls varchar(2000) --where 子句
declare @Sqls nvarchar(4000) --最终组合成的Sqls语句
declare @TmpStr varchar(2000) --临时
----------------------------
if @OrderByStr <> ''
set @OrderBySqls = ' order by '+@OrderByStr
else
set @OrderBySqls = ''
--------
if @WhereStr <> ''
set @WhereSqls = ' where ('+@WhereStr+')'
else
set @WhereSqls = ''
--------
set @TmpStr = @WhereSqls
--如果显示第一页,可以直接用top来完成
if @PageCurrent<=1
begin
select @Id1=cast(@PageSize as varchar(20))
exec('select top '+@Id1+' '+@SelectStr+' from '+@FromStr+@WhereSqls+@OrderBySqls)
goto LabelRes
end
---------------------------
select @Id1=cast(@PageSize as varchar(20))
,@Id2=cast((@PageCurrent-1)*@PageSize as varchar(20))
----------
if @WhereSqls <> ''
set @WhereSqls = @WhereSqls + ' and (' + @FdName+' not in(select top '+@Id2+' '+@FdName+' from '+@FromStr+@WhereSqls+@OrderBySqls+'))'
else
set @WhereSqls = ' where ' + @FdName+' not in(select top '+@Id2+' '+@FdName+' from '+@FromStr+@WhereSqls+@OrderBySqls+')'
----------
set @Sqls = 'select top '+@Id1+ ' '+ @SelectStr+' from '+@FromStr+@WhereSqls+@OrderBySqls
exec (@Sqls)
-----------
LabelRes:
-----返回总记录数
set @Sqls = 'select @a=count(1) from '+@FromStr+@TmpStr
exec sp_executesql @sqls,N'@a int output',@CountRows output
-----返回总页数
if @CountRows <= @PageSize
set @CountPage = 1
else
begin
set @CountPage = @CountRows/@PageSize
if (@CountRows%@PageSize) > 0
set @CountPage = @CountPage + 1
end
return
GO
//----分页存储过程结束---------------------------------------------------------------------------------------//----Delphi7调用过程开始----------------------------------------------------------------------------------------首先在 public 中定义 i, RsCount: integer;
在frmMain中放置一个dbgrid , datasource, AdoStoredProc [name->sp], 和4个 Button, 设置好相关连接!procedure TfrmMain.btnFirstClick(Sender: TObject);
begin
i := 1;
sp.ProcedureName := 'PageShowOne;1';
sp.Close;
sp.Parameters.ParamByName('@PageSize').Value := 50;
sp.Parameters.ParamByName('@PageCurrent').Value := i;
sp.Parameters.ParamByName('@FdName').Value := '图纸编号';
sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数';
sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi';
sp.Parameters.ParamByName('@WhereStr').Value := '';
sp.Parameters.ParamByName('@OrderByStr').Value := '日期';
sp.Open;
Label1.Caption := '记录总数:'+IntToStr(sp.Parameters.ParamValues['@CountRows']);
Label2.Caption := '总页数:'+IntToStr(sp.Parameters.ParamValues['@CountPage']);
RsCount := sp.Parameters.ParamValues['@CountPage'];
Label3.Caption := '第 '+IntToStr(i)+ ' 页';
end;procedure TfrmMain.btnNextClick(Sender: TObject);
begin
if i >= RsCount then
ShowMessage('已经是最后一页!')
else
i := i + 1;
sp.ProcedureName := 'PageShowOne;1';
sp.Close;
sp.Parameters.ParamByName('@PageSize').Value := 50;
sp.Parameters.ParamByName('@PageCurrent').Value := i;
sp.Parameters.ParamByName('@FdName').Value := '图纸编号';
sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数';
sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi';
sp.Parameters.ParamByName('@WhereStr').Value := '';
sp.Parameters.ParamByName('@OrderByStr').Value := '日期';
sp.Open;
Label3.Caption := '第 '+IntToStr(i)+ ' 页';
end;procedure TfrmMain.btnPriorClick(Sender: TObject);
begin
if i > 1 then
i := i - 1
else ShowMessage('已经是第一页了!');
sp.ProcedureName := 'PageShowOne;1';
sp.Close;
sp.Parameters.ParamByName('@PageSize').Value := 50;
sp.Parameters.ParamByName('@PageCurrent').Value := i;
sp.Parameters.ParamByName('@FdName').Value := '图纸编号';
sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数';
sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi';
sp.Parameters.ParamByName('@WhereStr').Value := '';
sp.Parameters.ParamByName('@OrderByStr').Value := '日期';
sp.Open;
Label3.Caption := '第 '+IntToStr(i)+ ' 页';
end;procedure TfrmMain.btnLastClick(Sender: TObject);
begin
i := RsCount;
sp.ProcedureName := 'PageShowOne;1';
sp.Close;
sp.Parameters.ParamByName('@PageSize').Value := 50;
sp.Parameters.ParamByName('@PageCurrent').Value := i;
sp.Parameters.ParamByName('@FdName').Value := '图纸编号';
sp.Parameters.ParamByName('@SelectStr').Value := '图纸编号,模具形状一,模具形状二,模具形状三,最大高度,最大宽度,重量,有无波面,螺丝孔数';
sp.Parameters.ParamByName('@FromStr').Value := 'tuzhi';
sp.Parameters.ParamByName('@WhereStr').Value := '';
sp.Parameters.ParamByName('@OrderByStr').Value := '日期';
sp.Open;
Label3.Caption := '第 '+IntToStr(i)+ ' 页';
end;
//--------------调用结束--------------------------------------------------------------------------------------------------------------------
來自:http://down.gmplay.com 理想下載!
ADOQuery.RecordSet.PageSize := 100;
for i := 1 to ADOQuery.RecordSet.PageCount do
begin
ADOQuery1.Recordset.AbsolutePage := i;
end;
-------------------------------------------
可是不明白这段代码应该放到哪里啊?
for i := 1 to ADOQuery.RecordSet.PageCount do
begin
ADOQuery1.Recordset.AbsolutePage := i;
end;
好像没反应