opyFile的原型如下function CopyFile(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL; stdcall;CopyFile实际上是Delphi中封装的Windows的系统数,如下所示:function CopyFile; external kernel32 name 'CopyFileA'; 当执行成功时则显下如下的信息: Application.MessageBox('数据备份成功','提示',Mb_ok + mb_iconinformation); 这是调用一个消息对话框,显示数据备份成功。 当程序执行失败时则显示如下的错误信息: Application.MessageBox('数据备份失败','提示',Mb_ok + mb_iconError); 以上是备份数据功能的代码分析,下面是恢复数据的功能,实际上是一个逆过程。反过来操作一遍即可完成。 var MyFileName, aa: string;这里需要多定义一个String字符型变量aa. if OpenDialog1.Execute then 上面是保存文件对话框,我们这里要使用的是打开文件对话框,当打开文件对话正确的选择了文件后,将会执行下面的代码。 MyFileName := OpenDialog1.FileName; 将打文件文件对话框中的FileName赋值给MyFileName变量。 if MyFileName <> '' then 当变量MyFileName不为空时才则执行下面的代码。 aa := ExtractFilePath(Application.ExeName) + 'data.mdb'; 将得到的完整路径名赋值给aa。Application.ExeName这里得到Exe可执行文件的完整路径。使用ExtractFilePath函数据将可执行文件的完整路径分开,只要路径不要可执行文件名。然后加’Data.mdb’就是数据库的完整路径了。 if CopyFile(Pchar(MyFileName),Pchar(aa), false) then 同样也是使用CopyFile来复制文件,当成功时则执行下面的代码,否则将执行Except下面的代码。 dm1.ADOConnection1.Close; dm1.ADOConnection1.Open; dm1.ADOConnection1.Connected:=true; 将数据库连接重新打开并将Connected设置为True。 dm1.GuoHuo.Active:=true; dm1.RK_1.Active:=true; dm1.RK_2.Active:=true; dm1.CK_1.Active:=true; dm1.CK_2.Active:=true; dm1.YG.Active:=true; dm1.KC.Active:=true; dm1.UserManager.Active:=true; dm1.EditData.Active:=true; 将全部的查询数据控件的Active全部激活。 Application.MessageBox('数据恢复成功','提示',Mb_ok + mb_iconinformation); 显不恢复成功的消息框。 Application.MessageBox('数据恢复失败','提示',Mb_ok + mb_iconError); 显不恢复失败的消息框。 以上的便是对数据备份与恢复功能中的实现代码进行了详细的分析。如有错漏之处还请指点出来,并将系统优化。 4.5 数据的导入与导出 为了方便使用,本系统还提供了数据导入与导出的功能,当一个中小型企业中有多个地方使用本系统时,可以使用本功能,进行数据的交换,以保证整个企业中的所有在使用本软件的数据库中的数据为最新的。本系统中的的数据导出分为员工数据的导出与物品数据的导出,导入也分为员工数据的导入与物品数据的导入。导出的数据将存放在系统程序目录中的DataBak子目中的Data.Mdb文件中,请不要将Data.mdb文件删除或是任意进行修改,这样系统将会系统用不正常。下面将分析数据导出的代码实现过程,员工数据导出与物品数据的导出不分开分析,因其实现的方法是一样的。数据导入与导出及数据库的删除在同一操作界面中。如下图所示: 当用户点导出员工表时,则会有如下的代码执行,以完成导出员工表的导出动作。实现数据导出的功能。 var sSql,str:string; 声明String字符型变量sSql与Str变量。 str := ExtractFilePath(Application.ExeName) + 'databak\data.mdb';得到将要导出数据的存放数据库文件的具体的路径。上一节中已经分析其实现原理,这里不再重复说明。 sSql := 'insert into users(UserName,Age,Sex,ZZMM,BDate,InDate,Tel,[