.dbf是数据库文件吗?如果是,仿照数据库应用程序那样把所有的dbf中的数据写到一起,然后保存成myname.dbf即可。
解决方案 »
- 带Cache的FileStream
- 求救 olevariant问题
- 修改COMCTRLS的源码
- 求FTP客户端源码
- 关于数据库与Treeview控件
- 恭祝Delphi园地网站升级为支持200人同时在线,每月积分前三名,升级白银会员,赠送商业源码一套!
- 转贴 共2000分 启动decal普及计划 ;delphi中的stl,delphi中的泛型编程及其例子 可以另开贴子给分
- 转贴 共2000分 启动decal普及计划 ;delphi中的stl,delphi中的泛型编程及其例子 可以另开贴子给分
- CSDN ~薪水調查~ ~行業調查~ ~工齡調查~ ~工作城市~ ~OICQ~
- 窗体我是用得时候创建,还是一下把窗体都创建好?
- 现在我准备做个客户端服务器类型的物流管理软件,希望高手们指教,分数不够再加
- 如何用一个变量可以同时来代替Tedit或Tcombobox的实例,以引用它们共有的属性
选中文件后添加到一个listbox中,可用下面的语句:
ListBox1.Items.Add(FileListBox1.FileName);
至于执行合并的语句,正如我前面所问,合并的文件是数据库文件吗?是的就执行数据记录的append和post操作,最终的存储看你使用什么数据库控件了
能让我请教更多的问题吗?
如果不用数据库,能不能文件直接追加,文本文件可以,不知dbf文件怎样做?
l batAppend把源表中的所有记录复制到目标表的末尾;
l batUpdate用源表中的记录更新目标表中的记录;
l batAppendUpdate把源表中不存在于目标表中的记录添加在目标表的末尾;
l batDelete删除源表在目标表中重复的记录;
l batCopy把源表复制到目标表。
下面的代码用Customer表中的记录更新当前表中的记录:
Table1.BatchMove('CUSTOMER.DB', batUpdate);与TBatchMove构件相比,BatchMove函数的功能比较简单。如果要移动很多的记录,最好选用TBatchMove构件。TBatchMove构件封装了一部分BDE的功能,能够从另一个数据集中引入数据。TBatchMove构件经常用于从服务器下载数据或者把本地的数据上载到服务器。TBatchMove构件能够自动建立一个新的表,并映射源数据集中的字段名称和类型。
使用TBatchMove构件的一般步骤
第一步,把一个TTable构件或TQuery构件放到窗体或数据模块上作为源数据集。
第二步,把另一个TTable构件放到窗体或数据模块上作为目标数据集。
第三步,把一个TBatchMove 构件放到数据模块上,设置它的Source属性指定源数据集,设置它的Destination属性指定目标数据集。
第四步,设置Mode属性指定操作方式,可以设为batAppend、batUpdate、batAppendUpdate、batCopy、batDelete等。
第五步(可选),设置ProblemTableName属性指定一个表的名字,执行批量移动操作时有问题的记录将放到这个表中。设置KeyViolTableName属性指定一个表的名字,更新一个Paradox表时违反主索引定义的记录将放到这个表中。设置ChangedTableName 属性指定一个表的名字,执行批量移动操作时目标表中变动的记录将放到这个表中。
第六步(可选),设置Mappings属性指定字段的映射方式。
第七步,调用Execute执行批量移动操作。指定操作方式TBatchMove构件的Mode属性用于指定操作方式:
l batAppend把源表中的所有记录复制到目标表的末尾;
l batUpdate用源表中的记录更新目标表中的记录;
l batAppendUpdate把源表中不存在于目标表中的记录添加在目标表的末尾;
l batDelete删除源表在目标表中重复的记录;
l batCopy把源表复制到目标表。
对于batAppend方式来说,目标数据集必须是已存在的。如果需要的话,BDE会自动进行数据类型的转换,不过,转换并不总是能成功的。对于batUpdate方式来说,目标数据集必须是已存在的,并且必须已建立索引。TBatchMove构件根据关键字段用源数据集中的记录更新目标数据集中匹配的记录。在更新过程中,BDE会尽可能地转换数据类型。对于batAppendUpdate方式来说,目标数据集必须是已存在的,并且必须已建立索引。TBatchMove构件根据关键字段用源数据集中的记录更新目标数据集中匹配的记录,如果没有找到匹配的记录,TBatchMove构件就把记录添加在源数据集的末尾。对于batCopy方式来说,目标数据集最好是不存在的,如果已经存在,目标数据集中的记录会被源数据集中的记录覆盖。如果源数据集和目标数据集的结构不同,例如,一个是Paradox,另一个是InterBase,BDE会尽可能地转换。不过,TBatchMove构件不会复制源数据集的索引、纠错规则、存储过程。对于batDelete方式来说,目标数据集必须是已存在的,并且必须已建立索引。TBatchMove构件根据关键字段删除目标数据集中重复的记录,
映射字段类型
默认情况下,在源数据集和目标数据集之间批量移动记录时是以字段的位置匹配的,也就是说,源数据集中的第一个字段到目标数据集中仍然是第一个字段,依次类推。如果不希望按字段的位置匹配,而希望按字段的名称匹配,就要设置Mappings属性。Mappings属性是一个字符串列表。假设源数据集中有一个字段叫SourceColName,希望它在目标数据集中匹配DestColName字段,Mapping属性中应加入这么一行:DestColName = SourceColName程序示例如下:
Procedure TForm1.Button1Click(Sender: TObject);
var Maps: TStringList;
Begin
With Maps Do
Begin
Clear;
Add('CustNo=CustomerNum');
Add('SSN');
End;
BatchMove1.Mappings := Maps;
End;
如果等号两边的字段的数据类型不同,Delphi 4会尽可能地转换,但可能会丢失数据或精度。假设一个字段是CHAR(10),如果试图转换为CHAR(5),后5个字符将被截掉。8.9.4 执行批量移动操作调用Execute函数将执行批量移动操作。例如,假设BatchMoveAdd是TBatchMove 构件的名称,要执行批量移动操作,可以这样写:
BatchMoveAdd.Execute;
实际上,在设计期也可以执行批量移动操作,方法是:在TBatchMove 构件上单击鼠标右键,在弹出的菜单中选择“Execute”命令。调用了Execute后,可以访问MovedCount属性,查看实际移动了多少条记录。RecordCount属性用于限制每次批量移动的记录数。如果RecordCount属性设为0,表示没有限制。
如果不用数据库,能不能文件直接追加,文本文件可以,不知dbf文件怎样做?
这样怎么做呀