Foxtable(狐表)用户栏目专家坐堂 → 如何通过一个自制按键实现数据备份与恢复


  共有12389人关注过本帖树形打印复制链接

主题:如何通过一个自制按键实现数据备份与恢复

帅哥哟,离线,有人找我吗?
雨中的泪
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1432 积分:9061 威望:0 精华:0 注册:2009/8/19 8:19:00
  发帖心情 Post By:2011/7/14 9:27: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

 

修改代码(带有数据库加密):

Dim dlg As New SaveFileDialog   '指定一个新的SaveFileDialog

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

dlg. title= "备份数据"

dlg.OverwritePrompt = False

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

    If FileSys.FileExists(dlg.filename) Then    '如果指定的文件存在

        if Messagebox.Show("有同名文件存在,是否删除?", "提示", MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes then

            FileSys.DeleteFile(dlg.filename,2,2)  '则彻底删除之

        Else

            Return

        End if

    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()    '开始导出数据

    FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)

    FileSys.DeleteFile(dlg.filename, 2, 2)

    EncryptFile(dlg.filename & ".bak", dlg.filename, "8888")

    FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)

    MessageBox.Show("备份数据生成完成!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)

End If

 

(六)、<恢复数据>按钮代码:

(1)、原代码:

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 ip as New Merger  

ip.SourcePath = dlg.filename  '指定数据文件

ip.SourceTableName = "调资基础数据"      '指定要合并的表

ip.Format = "Access" '指定合并文件格式

ip. PassWord = “TZX_GWY_JT_8888”  '用此属性指定合并文件的密码

ip.Fields = “单位名称”   ' 指定要合并的字段(列)

ip. DataTableName ="数据接收临时判断" '合并后的表名

ip. Merge()   '开始合并

Dim dws As List(Of String)       '定义一个字符型数组集合

 dws = DataTables("调资基础数据").GetUniqueValues("", "单位名称") '列出所有单位

 For each dw As String In dws '逐个单位判断

    Dim dr As DataRow = DataTables("数据接收临时判断").find("[单位名称] = '" & dw & "'")

        If dr IsNot Nothing Then

           If MessageBox.Show( dw & "的记录已经存在,确定是否请删除?","提示",MessageBoxButtons. YesNo,MessageBoxIcon.Question) = DialogResult.Yes then

     DataTables("调资基础数据").DeleteFor("[单位名称] = '" & dw & "'")

Else

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

End If

      End If

 Next

 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)

DataTables("数据接收临时判断").DataRows.Clear()  '清空指定表数据

   End If

(2)、简化代码:

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

 

 

(3)、修改代码(带有数据库加密):

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       '如果用户单击了确定按钮

FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)

FileSys.DeleteFile(dlg.filename, 2, 2)

DecryptFile (dlg.filename & ".bak", dlg.filename, "8888")

FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)

Dim ip as New Merger  

ip.SourcePath = dlg.filename  '指定数据文件

ip.SourceTableName = "调资基础数据"      '指定要合并的表

ip.Format = "Access" '指定合并文件格式

ip. PassWord = "TZX_GWY_JT_8888"  '用此属性指定合并文件的密码

ip.Fields = "单位名称"   ' 指定要合并的字段(列)

ip. DataTableName ="数据接收临时判断" '合并后的表名

ip. Merge()   '开始合并

Dim dws As List(Of String)       '定义一个字符型数组集合

 dws = DataTables("调资基础数据").GetUniqueValues("", "单位名称") '列出所有单位

 For each dw As String In dws '逐个单位判断

    Dim dr As DataRow = DataTables("数据接收临时判断").find("[单位名称] = '" & dw & "'")

        If dr IsNot Nothing Then

           If MessageBox.Show( dw & "的记录已经存在,确定是否请删除?","提示",MessageBoxButtons. YesNo,MessageBoxIcon.Question) = DialogResult.Yes then

     DataTables("调资基础数据").DeleteFor("[单位名称] = '" & dw & "'")

Else

FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)

     FileSys.DeleteFile(dlg.filename, 2, 2)

     EncryptFile(dlg.filename & ".bak", dlg.filename, "8888")

     FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)

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

End If

      End If

 Next

 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)

DataTables("数据接收临时判断").DataRows.Clear()  '清空指定表数据

FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)

     FileSys.DeleteFile(dlg.filename, 2, 2)

     EncryptFile(dlg.filename & ".bak", dlg.filename, "8888")

     FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)

Else

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

   End If

(4)、修改代码(带有数据库加密)简化代码:

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       '如果用户单击了确定按钮

FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)

FileSys.DeleteFile(dlg.filename, 2, 2)

DecryptFile (dlg.filename & ".bak", dlg.filename, "8888")

FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)

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)

FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)

     FileSys.DeleteFile(dlg.filename, 2, 2)

     EncryptFile(dlg.filename & ".bak", dlg.filename, "8888")

     FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)

Else

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

   End If


 回到顶部