| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> delphi >> 数据库应用 >> 文章正文
在Delphi中利用Tbatch组件完成数据批处理            【字体:
在Delphi中利用Tbatch组件完成数据批处理
作者:不祥    文章来源:-    点击数:    更新时间:2006-12-12

在Delphi中利用Tbatch组件完成数据批处理

军械工程学院五系研究生队 王俊

----在数据库应用系统中,常常要对数据进行成批的如追加、删除、更改等操作,这种批量操作在专门的数据库开发工具如VFP中用APPEND、COPY命令带上相应的命令子句就能轻易完成。但在其它开发工具中并没有类似的命令,而是提供能完成类似功能的控件或对象,如在PowerBuilder中就是利用PipeLine(数据管道)来完成两个或同构或不同构的表之间的数据批处理。本文要介绍的是Delphi中用来完成数据批处理任务的组件TBatchMove。TBatchMove组件能够:

将一个数据集中的数据追加到一个表中。.
从一个表中删除满足条件的记录。
按旧表结构生成一个新表,若欲生成的新表已存在,则覆盖。

----具体的操作要通过设置TBatchMove的Mode属性后再调用Execute方法来完成。为举例说明问题,我们在别名数据库DBDEMOS中先创建两个dBase格式的表Test1.dbf和Test2.dbf。二者的结构如下表:
Test1.dbf    Test2.dbf
Name    C    10    Name    C     10
Code    C    3    Code    C     3
 
----其中表Test2.dbf在字段code上建立有唯一索引。同时假设表单中已有两个TABLE控件Tsource和Tdest和一个TbatchMove组件batchmove1。Tsource和Tdest的DatabaseName属性均设为DBDEMOS。batchmove1的source属性设为Tsource,destination属性设为Tdest。
----在使用TbatchMove组件时,必须牢记:所有的操作都是以源表为标准针对目的表进行的,下面就分别举例说明TbatchMove的各种操作模式:

batAppend追加模式将源表中的数据追加到目的表中,目的表必须事先存在。这是缺省模式。
batchmove1.source=Tsource;
batchmove1.destination=Tdest2;
batchmove1.Mode:=batCopy;
batchmove1.Execute;

batUpdate更新模式用源表中匹配目的表的记录替换目的表中的相应记录。目的表必须事先存在且有一已定义的索引用来匹配源表中的记录。
Tdest.IndexFieldNames:='code';
batchmove1.source=Tsource;
batchmove1.destination=Tdest;
batchmove1.Mode:=batUpdate;
batchmove1.Execute;

batAppendUpdate追加更新模式如果源表中有与目的表匹配的记录,则替换目的表记录,否则,直接追加到目的表中。目的表必须事先存在且有一已定义的索引用来匹配源表中的记录。
Tdest.IndexFieldNames:='code';
batchmove1.source=Tsource;
batchmove1.destination=Tdest;
batchmove1.Mode:=batAppendUpdate;
batchmove1.Execute;

batCopy拷贝模式按源表结构生成新表,源表中的数据同时拷贝到目的新表中。如果要生成的新表已存在,则覆盖。
//按Test1.dbf生成新表xxx.dbf
//如果不指定扩展名dbf,生成的新表将是Paradox格式的xxx.db。
Tdest.TableName:='xxx.dbf';
batchmove1.source=Tsource;
batchmove1.destination=Tdest;
batchmove1.Mode:=batCopy;
batchmove1.Execute;

batDelete删除模式删除目的表中与源表匹配的记录。目的表必须事先存在且有一已定义的索引用来匹配源表中的记录。
Tdest.IndexFieldNames:='code';
batchmove1.source=Tsource;
batchmove1.destination=Tdest;
batchmove1.Mode:=batDelete;
batchmove1.Execute;
 

----TBatchMove还有一个重要属性ChangedTableName,在实际运用中,通过指定ChangedTableName属性可以创建一个Paradox表,该表用来保存目的表中被更改数据的原始备份,有了这个备份表就可以确保恢复目的表中的数据。

----顺便提一句,如果要删除某一个表中的全部记录,可以采用Table组件的EmptyTable方法,例如Tdest.EmptyTable将清空Tdest所指定的表test2.dbf。

----

[1] [2] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 为Delphi提供Pack和Undelete…

  • 如何 Pack dBASE资料档

  • 利用Delphi开发网络数据库应…

  • 利用Delphi开发响应用户输入…

  • 精简Delphi数据库应用系统-…

  • 掀开SQL Server 7.0的面纱

  • 如何在注册表中注册BDE

  • Delphi如何实现在一个Dbgrid…

  • 计算字段值

  • 数据库日期显示

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |