以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 关于数据的备份和恢复  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=48219)

--  作者:fengyungongzi
--  发布时间:2014/3/25 13:32:00
--  [求助] 关于数据的备份和恢复

     

 

           我设计的软件里面有20个表,我想设计一个按钮,点击后,能对20个表中有选择性的进行备份,在设计另一

 

个按钮,能进行对指定表的恢复。求思路和代码。请给以帮助,谢谢了。


--  作者:Bin
--  发布时间:2014/3/25 14:33:00
--  
你希望的备份方式是怎么样的呢? 导出为ACCESS文件?

恢复的时候清空表从新导入?  数据量大的话效率非常差的哦.

--  作者:fengyungongzi
--  发布时间:2014/3/25 15:44:00
--  

  是的。

 

我从论坛用的别人的代码

 

数据备代码:

Dim dlg As New SaveFileDialog \'定一个新的SaveFileDialog
dlg.Filter= "备份文件|*.dat" \'设置筛选器
dlg.Title="请选择保存路径及保存文件名!"
dlg.InitialDirectory = ProjectPath & "databak\\"  **这个语句我不太懂什么意思。
dlg.FileName = Format(Date.Today,"yyyy-MM-dd")
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    FileSys.CopyFile(ProjectPath & "data.mdb",dlg.FileName, True) ****  这个语句我不太懂什么意思。

    MessageBox.Show("备份成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

 

 

红字部分为我不太懂的地方,请帮忙解释。运行后,告诉我找不到data.mdb

[此贴子已经被作者于2014-3-25 15:45:15编辑过]

--  作者:Bin
--  发布时间:2014/3/25 15:47:00
--  
第一个部分,设置根目录

第二个部分,复制文件到这个目录http://www.foxtable.com/help/topics/0342.htm

--  作者:Bin
--  发布时间:2014/3/25 15:47:00
--  
但是这个是备份整个数据源哦.
--  作者:fengyungongzi
--  发布时间:2014/3/25 15:53:00
--  

 

 

       数据备份用 这个代码行吗:

 

Dim dlg As New SaveFileDialog   \'指定一个新的SaveFileDialog
dlg.Filter= "备份文件|*.DBF "   \'设置筛选器

dlg. title= "备份数据"
dlg.OverwritePrompt = True  \'对于已经存在的文件名,是否出现覆盖警告

If dlg.ShowDialog = DialogResult.Ok Then   \'如果用户单击了确定按钮

If FileSys.FileExists(dlg.filename) Then    \'如果指定的文件存在
    FileSys.DeleteFile(dlg.filename,2,2)     \'则彻底删除之
    End If
    Dim ex as New Exporter
    ex.SourceTableName = "调资基础数据"   \'指定导出表

ex.Format = "Access"   \'指定导出文件格式
    ex. PassWord = “TZX_GWY_JT_8888”  \'用此属性指定目标文件的密码

ex.filepath =  dlg.filename    \'指定目标文件

ex.NewTableName = "调资基础数据"        \'指定导出后的表的名称

    ex.Export()    \'开始导出数据
    MessageBox.Show(备份数据生成完成!!!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

 

 

恢复时用的这个代码:

 

 

If MessageBox.Show( "恢复数据库操作将清空数据库,确定是否清空?","提示",MessageBoxButtons. YesNo,MessageBoxIcon.Question) = DialogResult.Yes then

DataTables("调资基础数据").DataRows.Clear()  \'清空指定表数据

Else

     Return       \'点击否终止代码的执行

End If

Dim dlg As New OpenFileDialog    \'定义一个新的OpenFileDialog

dlg.Filter= "备份文件|*.DBF"        \'设置筛选器

dlg. title= "数据恢复"  

If dlg.ShowDialog = DialogResult.Ok Then       \'如果用户单击了确定按钮

Dim mg As New Merger

 mg.SourcePath = dlg.filename

 mg.SourceTableName = "调资基础数据"

 mg.Format = "Access"

 mg. PassWord = "TZX_GWY_JT_8888"

 mg.DataTableName = "调资基础数据"

 mg.Merge()

 MessageBox.Show("数据恢复完成!!!","提示",MessageBoxButtons.OK,MessageBoxIcon.Question)

Else

 MessageBox.Show( "数据库已被清空!!!","提示",MessageBoxButtons. OK,MessageBoxIcon.Warning)

   End If

 

数据备份时,告诉我备份成功了。但我用foxtable中的导入功能时告诉我。

 


图片点击可在新窗口打开查看此主题相关图片如下:)52`uq5v2dyyp3lpfn%475.jpg
图片点击可在新窗口打开查看

 

我用数据恢复后,他把我原来的表都清空了,但没有导入我以前备份的表。

[此贴子已经被作者于2014-3-25 15:54:10编辑过]

--  作者:fengyungongzi
--  发布时间:2014/3/25 15:59:00
--  

  老师在吗???

 


--  作者:Bin
--  发布时间:2014/3/25 16:02:00
--  
代码看上去似乎没有问题,你手动使用菜单功能合并你备份的这个文件看看是否有同样的问题出现.
--  作者:fengyungongzi
--  发布时间:2014/3/25 16:09:00
--  

  用合并后,出现这个提示。

 


图片点击可在新窗口打开查看此主题相关图片如下:vsj$ee}5_d1zwnq1pn$c@4.jpg
图片点击可在新窗口打开查看


--  作者:Bin
--  发布时间:2014/3/25 16:13:00
--  
参考这里

示例二

如果希望打开一个保存文件对话框,导出到用户指定的文件中,可以参考下面的代码:

Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= 
"Access文件|*.mdb" \'设置筛选器
If 
dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim 
ex As New Exporter
    
ex.SourceTableName = "订单" \'指定导出表
    
ex.filepath = dlg.FileName  \'指定目标文件
    
ex.Export() \'开始导出
End If

示例三

将订单表导出为Access 2007格式:

Dim ex as New Exporter
ex
.SourceTableName = "订单" \'指定导出表
ex
.FilePath = "c:\\Data\\订单.accdb" \'指定目标文件
ex.Format = "Access2007" 
\'导出格式为
Access 2007
ex.Export() \'开始导出


不要设置ex.Format = "Access"