以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助access恢复命令简化代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16605)

--  作者:bl018
--  发布时间:2012/2/18 20:44:00
--  求助access恢复命令简化代码

如下代码请各位大侠帮手如何简化一下,"恢复access数据库备份"命令如下:

       

\'恢复数据库

Dim Result As DialogResult

Result = MessageBox.Show("数据恢复将破坏现有数据库,继续吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If Result = DialogResult.Yes Then 

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

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

 

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

        Dim fc As String=dlg.FileName     

        Dim f As String=fc.TrimEnd("c")          \'指定的要删除”c”的字符

        DecryptFile(fc,f, "fox")                 \'用于解密EncryptFile函数加密后的文件,

 

            DataTables("帐务处理").DataRows.Clear()

            DataTables("users").DataRows.Clear()

            DataTables("功能分类").DataRows.Clear()

            DataTables("单位").DataRows.Clear()

            DataTables("归口类型").DataRows.Clear()

            DataTables("授权表").DataRows.Clear()

            DataTables("归口类型").DataRows.Clear()

             DataTables("收支汇总表").DataRows.Clear()

             DataTables("文件管理").DataRows.Clear()

            DataTables("正常经费收支情况表").DataRows.Clear()

            DataTables("水利专户").DataRows.Clear()

            DataTables("水库经营性收支表").DataRows.Clear()

            DataTables("科股室").DataRows.Clear()

            DataTables("项目设置").DataRows.Clear()

            DataTables("预算类型").DataRows.Clear()

            DataTables("项目设置").DataRows.Clear()

 

         Dim mg As New Merger

            mg.SourcePath = f

            mg.PassWord="sir"

            mg.SourceTableName = "帐务处理"

            mg.DataTableName = "帐务处理"

            mg.Merge()

          

        Dim mg2 As New Merger

             Mg2.SourcePath = f

            Mg2.PassWord="sir"

            Mg2.SourceTableName = "users"

            Mg2.DataTableName = " users"

            Mg2.Merge()

          

       Dim mg3 As New Merger

            Mg3.SourcePath = f

            Mg3.PassWord="sir"

            Mg3.SourceTableName = "功能分类"

            Mg3.DataTableName = "功能分类"

            Mg3.Merge()

 

       Dim mg4 As New Merger

            Mg4.SourcePath = f

            Mg4.PassWord="sir"

            Mg4.SourceTableName = "单位"

            Mg4.DataTableName = "单位"

            Mg4.Merge()

 

         Dim mg5 As New Merger

            Mg5.SourcePath = f

            Mg5.PassWord="sir"

            Mg5.SourceTableName = "归口类型"

            Mg5.DataTableName = "归口类型"

            Mg5.Merge()

 

        Dim mg6 As New Merger

            Mg6.SourcePath = f

            Mg6.PassWord="sir"

            Mg6.SourceTableName = "授权表 "

            Mg6.DataTableName = "授权表"

            Mg6.Merge()

 

        Dim mg7 As New Merger

            Mg7.SourcePath = f

            Mg7.PassWord="sir"

            Mg7.SourceTableName = "收支汇总表"

            Mg7.DataTableName = "收支汇总表"

            Mg7.Merge()

 

        Dim mg8 As New Merger

            Mg8.SourcePath = f

            Mg8.PassWord="sir"

            Mg8.SourceTableName = "文件管理 "

            Mg8.DataTableName = "文件管理"

            Mg8.Merge()

 

       Dim mg9 As New Merger

            Mg9.SourcePath = f

            Mg9.PassWord="sir"

            Mg9.SourceTableName = "正常经费收支情况表 "

            Mg9.DataTableName = "正常经费收支情况表"

            Mg9.Merge()

 

      Dim mg10 As New Merger

            Mg10.SourcePath = f

            Mg10.PassWord="sir"

            Mg10.SourceTableName = "水利专户"

            Mg10.DataTableName = "水利专户"

            Mg10.Merge()

      Dim mg11 As New Merger

            Mg11.SourcePath = f

            Mg11.PassWord="sir"

            Mg11.SourceTableName = "水库经营性收支表"

            Mg11.DataTableName = "水库经营性收支表"

            Mg11.Merge()

       Dim mg12 As New Merger

            Mg12.SourcePath = f

            Mg12.PassWord="sir"

            Mg12.SourceTableName = "科股室 "

            Mg12.DataTableName = "科股室"

            Mg12.Merge()

            Dim mg13 As New Merger

            Mg13.SourcePath = f

            Mg13.PassWord="sir"

            Mg13.SourceTableName = "项目设置"

            Mg13.DataTableName = "项目设置"

            Mg13.Merge()

         Dim mg14 As New Merger

            Mg14.SourcePath = f

            Mg14.PassWord="sir"

            Mg14.SourceTableName = "预算类型 "

            Mg14.DataTableName = "预算类型"

            Mg14.Merge()

       Dim mg15 As New Merger

            Mg15.SourcePath = f

            Mg15.PassWord="sir"

            Mg15.SourceTableName = "预算草案"

            Mg15.DataTableName = "预算草案"

            Mg15.Merge()

 

            FileSys.DeleteFile(f,2,2)       ‘删除f文件

            MessageBox.Show("数据导入成功!")

        End If

End If


--  作者:bl018
--  发布时间:2012/2/18 20:49:00
--  

上述是学民通仓管系统的恢复ACCESS数据备份,,,

      他的ACCESS数据备份代码我简化成如下(可以做为ACCESS外部数据源数据备份-通用代码):

   

\'Access数据库备份

Dim f As String

Dim fc As String

Dim rqf As Date = Date.today

Dim rq As String=Format(rqf, "yyyyMMdd")

Dim q As Date = Date.now

Dim s As String=Format(q, "HHmmss")

 

Dim Names As List(Of String)

Names= Connections("blny2011").GetTableNames

For Each name As String In Names  

Dim ex As New Exporter

    ex.SourceTableName = name \'指定导出表

    ex.filepath = ProjectPath & "backup" & "\\" & rq & "-" & s & ".mdb" \'指定目录(backup)目标文件

    ex.PassWord="sir"  

    ex.Export() \'开始导出

    f=ex.filepath

    fc=f & "c"

Next

EncryptFile(f, fc, "fox")    \'生成一个加密文件,加密密码为foX

FileSys.DeleteFile(f,2,2)     \'将f  文件则彻底删除之

MessageBox.Show("备份数据保存成功!" & fc)


--  作者:bl018
--  发布时间:2012/2/18 23:57:00
--  

如果是几十个表要备份那要远长代码,所以征集各位简化的代码用用图片点击可在新窗口打开查看


--  作者:czy
--  发布时间:2012/2/19 8:09:00
--  

这样?

 

Dim Names() As String  = {"帐务处理", "users","功能分类","单位","归口类型","授权表","收支汇总表","文件管理","正常经费收支情况表","水利专户","水库经营性收支表","科股室","项目设置","预算类型","预算草案"}
For Each Name As String In Names

    DataTables(Name).DataRows.Clear()
    Dim mg As New Merger
    mg.SourcePath = f
    mg.PassWord="sir"
    mg.SourceTableName = Name
    mg.DataTableName = Name
    mg.Merge()
Next

[此贴子已经被作者于2012-2-19 8:16:06编辑过]

--  作者:bl018
--  发布时间:2012/2/19 20:58:00
--  

3Q 


--  作者:bl018
--  发布时间:2012/2/19 21:00:00
--  

请问这个可以改不

Dim Names() As String  = {"帐务处理", "users","功能分类","单位","归口类型","授权表","收支汇总表","文件管理","正常经费收支情况表","水利专户","水库经营性收支表","科股室","项目设置","预算类型","预算草案"}

好象用下面的换不了

    

Dim Names As List(Of String)

Names= Connections("blny2011").GetTableNames

For Each name As String In Names  


--  作者:czy
--  发布时间:2012/2/20 7:56:00
--  

直接这样就可以遍历了

 

For Each name As String In Connections("blny2011").GetTableNames
    Output.Show(name)
Next