DELPHI中利用Timer组件完成数据批处理(ADO)

喵喵喵喵萌么

喵喵喵喵萌么

2016-02-19 12:38

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的DELPHI中利用Timer组件完成数据批处理(ADO)懂设计的网友们快点来了解吧!

近日在帮一个好朋友写一个数据库开发模块时遇到了数据批处理的问题.
  思考了一些数据批处理的开发方法,不敢独享特总结与大家分享.
  在 数 据 库 应 用 系 统 中, 常 常 要 对 数 据 进 行 成 批 的 如 追 加、 删 除、 更 改 等 操 作,
  这 种 批 量 操 作 在 专 门 的 数 据 库 开 发 工 具 如VFP 中 用APPEND 、COPY 命 令 带 上 相 应 的
  命 令 子 句就 能 轻 易 完 成。 但 在 其 它 开 发 工 具 中 并 没 有 类 似 的 命 令,
  而 是 提 供 能 完 成 类 似 功 能 的 控 件 或 对 象, 如 在PowerBuilder 中 就 是
  利 用Pipe Line( 数 据 管 道) 来 完 成 两 个 或 同 构 或 不 同 构 的 表 之 间 的 数 据 批 处 理。
  本 文 要 介 绍 的 是在利用Delphi进行数据库开发时用Timer组件进行批处理的方法.
  Delphi开发中在利用Delphi进行数据库开发时利用最多的就是ADO和BDE两种方法,众所周知BDE曾经是Borland大力提倡的,
  所以在BDE组件上Borland花费了大量的经历所以在数据批处理上有TBatchMove控件可以完成数据批处理.
  具 体 的 操 作 要 通 过 设 置TBatchMove 的Mode 属 性 后 再 调 用Execute 方 法 来 完 成。有 关BDE 的 帮 助。
  本 文 中 各 种 操 作 模 式 的 实 际 结 果 均 可 以 从Delphi 的Database Desktop
  中 查 看 到。
  这不是本文的重点所以不再此赘述.如有兴趣Delphi文档中有清楚的注释.,查阅便可.
  本文讨论的重点是:在ADO进行数据批处理方式.
  拿到这个问题一般采取的方式是数据结构的特征对全部数据进行遍历,循环插入.
  不过笔者在此要讲的是一种快捷,高效,建议的数据批处理方式..具体代码和操作方式如下:数据库基本的连接代码:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

procedure TForm1.FormCreate(Sender: TObject);
  var
  MyPath:string;
  const
  MyPassW ='****'; ///数据库密码
  begin
  MyPath:=ExtractFilePath(ParamStr(0)); ////数据库路径
  AdoConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
  MyPath+'dbdb.mdb;Jet OLEDB:Database Password='+
  MyPassW+';Persist Security Info=False';
  ///////设置数据引擎并加载密码
  ADOConnection1.LoginPrompt := false;
  ADOConnection1.Connected := true;
  ADOTable1.Connection := ADOConnection1;
  ADOTable1.TableName:='tab1';
  ADOTable2.Connection := ADOConnection1;
  ADOTable2.TableName:='tab2';
  try
  ADOTable2.Open;
  ADOTable1.Open;
  DataSource1.DataSet := ADOTable1;
  DBGrid1.DataSource := DataSource1;
  DBNavigator1.DataSource := DataSource1;
  except
  MessageBox(0,'无法打开数据库','错误',MB_OK);
  end;

/////////////Timer控件控制循环

begin
  ///////////进行差错控制的异构表的批量数据处理
  DataSource2.DataSet.Insert;
  ADOTable2.Fields[0].AsString:=ADOTable1.Fields[0].AsString;
  ADOTable2.Fields[1].AsString:=ADOTable1.Fields[1].AsString;
  DataSource1.DataSet.Next;
  if DataSource1.DataSet.Eof = True then timer1.Enabled := false ;
  if DataSource1.DataSet.Eof = True then ShowMessage('数据以导入成功!');
  except
  MessageBox(0,'数据导入失败','错误',MB_OK);
  end;
  end;
  DataModule2.DataSource1.DataSet.Next;//////////此句最为关键,即为循环语句.
  插入一条记录的时间(Timer的响应时间)是可以设置的.

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

这是利用Timer组件的特性.DataSet.Next属性设计而成的异构表之间的数据批量导入功能,
  那么删除,更新等功能都有类似代码可以实现(使用DataSource的属性修改即可).
  因为有查询功能所以我在开发中利用的是TADOQuery组件,大致方法一样.


  作者:VIIVD
  E-MAIL:bao-er@163.com
  日期:2004.6.5

展开更多 50%)
分享

猜你喜欢

DELPHI中利用Timer组件完成数据批处理(ADO)

编程语言 网络编程
DELPHI中利用Timer组件完成数据批处理(ADO)

Delphi中利用MSCOMM控件进行GPS数据采集

编程语言 网络编程
Delphi中利用MSCOMM控件进行GPS数据采集

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在DELPHI中利用API实现网格内组件的嵌入

Delphi
在DELPHI中利用API实现网格内组件的嵌入

利用Dreamweaver快速批处理图片链接

Web开发
利用Dreamweaver快速批处理图片链接

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL 备份还原数据库批处理

编程语言 网络编程
MySQL 备份还原数据库批处理

Delphi中的消息处理

编程语言 网络编程
Delphi中的消息处理

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何制作平面式列头的Listview

如何制作平面式列头的Listview

转换中文为unicode 转换unicode到正常文本

转换中文为unicode 转换unicode到正常文本
下拉加载更多内容 ↓