请教一个简单的问题 如何使用batchmove? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用Tbatch组件完成数据批处理 在数据库应用系统中,常常要对数据进行成批的如追加、删除、更改等操作,这种批量操作在专门的数据库开发工具如VFP中用APPEND、COPY命令带上相应的命令子句就能轻易完成。但在其它开发工具中并没有类似的命令,而是提供能完成类似功能的控件或对象,如在PowerBuilder中就是利用PipeLine(数据管道)来完成两个或同构或不同构的表之间的数据批处理。本文要介绍的是Delphi中用来完成数据批处理任务的组件TBatchMove。TBatchMove组件能够: (1)将一个数据集中的数据追加到一个表中。. (2)从一个表中删除满足条件的记录。 (3)按旧表结构生成一个新表,若欲生成的新表已存在,则覆盖。 具体的操作要通过设置TBatchMove的Mode属性后再调用Execute方法来完成。为举例说明问题,我们在别名数据库DBDEMOS中先创建两个dBase格式的表Test1.dbf和Test2.dbf。二者的结构如下表: Test1.dbf Test2.dbf NameC10NameC10 CodeC3CodeC3 其中表Test2.dbf在字段code上建立有唯一索引。同时假设表单中已有两个TABLE控件Tsource和Tdest和一个TbatchMove组件batchmove1。Tsource和Tdest的DatabaseName属性均设为DBDEMOS。batchmove1的source属性设为Tsource,destination属性设为Tdest。 在使用TbatchMove组件时,必须牢记:所有的操作都是以源表为标准针对目的表进行的,下面就分别举例说明TbatchMove的各种操作模式: (1)batAppend追加模式将源表中的数据追加到目的表中,目的表必须事先存在。这是缺省模式。 batchmove1.source=Tsource; batchmove1.destination=Tdest2; batchmove1.Mode:=batAppend; batchmove1.Execute; (2)batUpdate更新模式用源表中匹配目的表的记录替换目的表中的相应记录。目的表必须事先存在且有一已定义的索引用来匹配源表中的记录。 Tdest.IndexFieldNames:='code'; batchmove1.source=Tsource; batchmove1.destination=Tdest; batchmove1.Mode:=batUpdate; batchmove1.Execute; (3)batAppendUpdate追加更新模式如果源表中有与目的表匹配的记录,则替换目的表记录,否则,直接追加到目的表中。目的表必须事先存在且有一已定义的索引用来匹配源表中的记录。 Tdest.IndexFieldNames:='code'; batchmove1.source=Tsource; batchmove1.destination=Tdest; batchmove1.Mode:=batAppendUpdate; batchmove1.Execute; (4)batCopy拷贝模式按源表结构生成新表,源表中的数据同时拷贝到目的新表中。如果要生成的新表已存在,则覆盖。//按Test1.dbf生成新表xxx.dbf//如果不指定扩展名dbf,生成的新表将是Paradox格式的xxx.db。 Tdest.TableName:='xxx.dbf'; batchmove1.source=Tsource; batchmove1.destination=Tdest; batchmove1.Mode:=batCopy; batchmove1.Execute; (5)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。 本文中是以同构的dbf表进行的示例,在实际运用中,源表和目的表可能同购,也可能异构,异构时,Delphi的BDE会自动进行类型和长度上的转换,具体类型间的关系可以有关BDE的帮助。本文中各种操作模式的实际结果均可以从Delphi的DatabaseDesktop中查看到。 大家在什么操作系统下进行编程! 请教DateTimePicker1的问题? 在动态生成的按钮,或菜单下动态生成的事件中加载DLL窗体 Delphi盒子最近是不是打不开? 數據庫程序設計方案---廣納大家建議....在此謝過﹗ 部分程序外包 使用opengl的朋友请进 介绍有分 一个流问题! 关于图片移动的问题 FastReport如实现打印固定行数,不足补打空白行??? 我在建立一個項目組,且保存為Projectgroup1後,在打開為什麼會變化呢? 谁能指导一下直接控制access数据库??? 数据库新手求教,关于选择何种数据库的问题。
在数据库应用系统中,常常要对数据进行成批的如追加、删除、更改等操作,这种批量操作在专门的数据库开发工具如VFP中用APPEND、COPY命令带上相应的命令子句就能轻易完成。但在其它开发工具中并没有类似的命令,而是提供能完成类似功能的控件或对象,如在PowerBuilder中就是利用PipeLine(数据管道)来完成两个或同构或不同构的表之间的数据批处理。本文要介绍的是Delphi中用来完成数据批处理任务的组件TBatchMove。TBatchMove组件能够:
(1)将一个数据集中的数据追加到一个表中。.
(2)从一个表中删除满足条件的记录。
(3)按旧表结构生成一个新表,若欲生成的新表已存在,则覆盖。 具体的操作要通过设置TBatchMove的Mode属性后再调用Execute方法来完成。为举例说明问题,我们在别名数据库DBDEMOS中先创建两个dBase格式的表Test1.dbf和Test2.dbf。二者的结构如下表:
Test1.dbf Test2.dbf
NameC10NameC10
CodeC3CodeC3 其中表Test2.dbf在字段code上建立有唯一索引。同时假设表单中已有两个TABLE控件Tsource和Tdest和一个TbatchMove组件batchmove1。Tsource和Tdest的DatabaseName属性均设为DBDEMOS。batchmove1的source属性设为Tsource,destination属性设为Tdest。 在使用TbatchMove组件时,必须牢记:所有的操作都是以源表为标准针对目的表进行的,下面就分别举例说明TbatchMove的各种操作模式:
(1)batAppend追加模式将源表中的数据追加到目的表中,目的表必须事先存在。这是缺省模式。
batchmove1.source=Tsource;
batchmove1.destination=Tdest2;
batchmove1.Mode:=batAppend;
batchmove1.Execute;
(2)batUpdate更新模式用源表中匹配目的表的记录替换目的表中的相应记录。目的表必须事先存在且有一已定义的索引用来匹配源表中的记录。
Tdest.IndexFieldNames:='code';
batchmove1.source=Tsource;
batchmove1.destination=Tdest;
batchmove1.Mode:=batUpdate;
batchmove1.Execute;
(3)batAppendUpdate追加更新模式如果源表中有与目的表匹配的记录,则替换目的表记录,否则,直接追加到目的表中。目的表必须事先存在且有一已定义的索引用来匹配源表中的记录。
Tdest.IndexFieldNames:='code';
batchmove1.source=Tsource;
batchmove1.destination=Tdest;
batchmove1.Mode:=batAppendUpdate;
batchmove1.Execute;
(4)batCopy拷贝模式按源表结构生成新表,源表中的数据同时拷贝到目的新表中。如果要生成的新表已存在,则覆盖。
//按Test1.dbf生成新表xxx.dbf
//如果不指定扩展名dbf,生成的新表将是Paradox格式的xxx.db。
Tdest.TableName:='xxx.dbf';
batchmove1.source=Tsource;
batchmove1.destination=Tdest;
batchmove1.Mode:=batCopy;
batchmove1.Execute;
(5)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。 本文中是以同构的dbf表进行的示例,在实际运用中,源表和目的表可能同购,也可能异构,异构时,Delphi的BDE会自动进行类型和长度上的转换,具体类型间的关系可以有关BDE的帮助。本文中各种操作模式的实际结果均可以从Delphi的DatabaseDesktop中查看到。