最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Access数据表分页显示&导入数据库

来源:动视网 责编:小采 时间:2020-11-09 07:56:54
文档

Access数据表分页显示&导入数据库

Access数据表分页显示&导入数据库:以 Delphi 开发基于 Oracle/SQL Server 的数据库应用程序,在显示表中数据时,若数据量过大,难免要应用 分页 技术――幸运的是,诸于此两者的大型 DBMS,对 分页 提供了良好的支持,但对 M$Access 来说却要麻烦些――前提自然是 Access 表中没有自增
推荐度:
导读Access数据表分页显示&导入数据库:以 Delphi 开发基于 Oracle/SQL Server 的数据库应用程序,在显示表中数据时,若数据量过大,难免要应用 分页 技术――幸运的是,诸于此两者的大型 DBMS,对 分页 提供了良好的支持,但对 M$Access 来说却要麻烦些――前提自然是 Access 表中没有自增


以 Delphi 开发基于 Oracle/SQL Server 的数据库应用程序,在显示表中数据时,若数据量过大,难免要应用 分页 技术――幸运的是,诸于此两者的大型 DBMS,对 分页 提供了良好的支持,但对 M$Access 来说却要麻烦些――前提自然是 Access 表中没有自增字段―

以 Delphi 开发基于 Oracle/SQL Server 的数据库应用程序,在显示表中数据时,若数据量过大,难免要应用 分页 技术――幸运的是,诸于此两者的大型 DBMS,对 分页 提供了良好的支持,但对 M$ Access 来说却要麻烦些――前提自然是 Access 表中没有自增字段――而这正是关键...

实现步骤:
一、变量定义
FTotalRecCountMDB: Integer; //Access 库中表的记录数
FFieldLstAndType: string; //字段及字段类型列表
FFieldLst: string; //字段列表

二、变量使用(示例)
FFieldLstAndType:= 'Name varchar(255); Age integer; Addr varchar(255)';
FFieldLst:= 'Name; Age; Addr';

三、准备
//创建同结构临时表――多出 ID 自增字段!
//aqy_Tmp 已连接至对应的 Access
with aqy_Tmp do //aqy_Tmp: TADOQuery
begin
Close;
SQL.Text:= 'Create Table _TabTmp(ID Counter PRIMARY KEY,' + FFieldLstAndType + ')';
ExecSQL;
Close;
end;

//将所选的表中的数据 Copy 到临时表
with aqy_Tmp do
begin
Close;

SQL.Text:=
'Insert Into _TabTmp(' + FFieldLst + ')' +
'Select ' + FFieldLst + ' From ' + edt_TabName.Text; //edt_TabName: TEdit;

ExecSQL;
Close;
end;

四、OK,分页显示&导入DB //每 万条 分一页,<= 万条无需分页――当然,此可更改为 千条、十万条 等。
var
i{, j}: integer;
BatchCount: Integer;
begin
with aqy_Tmp do
begin
if FTotalRecCountMDB <= 10000 then //若需导入的总量 <= 10,000 条,无需分页(批次)导入
begin
if Active then
Close;

SQL.Text:= 'select * from _TabTmp';
Open;

//then import datas into DB
{while not Eof do
...
Next;
}
end
else
begin
if FTotalRecCountMDB mod 10000 = 0 then
BatchCount:= FTotalRecCountMDB div 10000
else
BatchCount:= FTotalRecCountMDB div 10000 + 1;

for i:= 0 to BatchCount - 1 do
begin
if Active then
Close;

//分页
SQL.Text:=
'select * from _TabTmp where ID Between ' +
IntToStr((i * 10000) + 1) + ' and ' + IntToStr((i + 1) * 10000);

Open;

//other codes that import datas to DB
{while not Eof do
...
Next;
}
end; //end for loop
end; //batch end

//delete _TabTmp
if Active then
Close;
SQL.Text:= 'Drop Table _TabTmp';
ExecSQL;
Close;
end; //end with aqy_Tmp
end;

OK,Done!

实际应用中当然至少还应加进 异常处理,及 Application.ProcessMessages 以免在导数据入库过程中程序假死~

ADelphiCoder

文档

Access数据表分页显示&导入数据库

Access数据表分页显示&导入数据库:以 Delphi 开发基于 Oracle/SQL Server 的数据库应用程序,在显示表中数据时,若数据量过大,难免要应用 分页 技术――幸运的是,诸于此两者的大型 DBMS,对 分页 提供了良好的支持,但对 M$Access 来说却要麻烦些――前提自然是 Access 表中没有自增
推荐度:
标签: 显示 数据 导入
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top