以文本方式查看主题

-  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=51466)

--  作者:aimanbao233
--  发布时间:2014/5/27 10:23: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.SourceTableName = "工程清单表"   \'指定导出表
    ex.SourceTableName = "合同清单表"   \'指定导出表
    ex.SourceTableName = "客户名单表"   \'指定导出表
    ex.SourceTableName = "事务清单表"   \'指定导出表
    ex.SourceTableName = "收款明细表"   \'指定导出表
    ex.SourceTableName = "收款清单表"   \'指定导出表
    ex.Format = "excel"   \'指定导出文件格式
    \'ex. PassWord = "TZX_GWY_JT_8888"  \'用此属性指定目标文件的密码
    ex.filepath =  dlg.filename    \'指定目标文件
    ex.NewTableName = "合作单位表"        \'指定导出后的表的名称
    ex.NewTableName = "工程清单表"        \'指定导出后的表的名称
    ex.NewTableName = "合同清单表"        \'指定导出后的表的名称
    ex.NewTableName = "客户名单表"        \'指定导出后的表的名称
    ex.NewTableName = "事务清单表"        \'指定导出后的表的名称
    ex.NewTableName = "收款明细表"        \'指定导出后的表的名称
    ex.NewTableName = "收款清单表"        \'指定导出后的表的名称
    ex.Export()    \'开始导出数据
    MessageBox.Show("备份数据生成完成!!!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
运行后提示“不能更新。数据库或对象为只读。”,请问如何解决?另不知上述代码能够实现我想要的功能?

--  作者:Bin
--  发布时间:2014/5/27 10:33: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
    for each dt as datatable in datatables
         Dim ex As New Exporter
         ex.SourceTableName=dt.name
          ex.filepath =  dlg.filename & "\\备份数据源.MDB"
          ex.Export()  
    next
End If

--  作者:aimanbao233
--  发布时间:2014/5/27 11:15:00
--  
改成下述代码,可以生成一个数据表EXCEL文件,但是EXCEL文件打开的时候说是图片点击可在新窗口打开查看“您尝试打开的文件“备份资料.xls”的格式与文件扩展名指定的格式不一致”,强行打开后就显示乱码。求指教。
Dim dlg As New SaveFileDialog   \'指定一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls"   \'设置筛选器
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
    For Each dt As DataTable In DataTables
        Dim ex As New Exporter
        ex.SourceTableName=dt.name
        ex.filepath =  dlg.filename
        ex.Export()
    Next
End If

--  作者:Bin
--  发布时间:2014/5/27 11:16:00
--  
看2楼. 这种方式是生成MDB  ACCESS文件.
--  作者:aimanbao233
--  发布时间:2014/5/27 11:29:00
--  
完全采用2楼代码,会出现如下错误提示。
\'C:\\Users\\lenovo\\Desktop\\备份资料.DBF \\备份数据源.MDB\'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
请问如何解决? 弱弱问下,既然是生成MDB文件,开始设置的DBF是何意? 跪谢!

--  作者:Bin
--  发布时间:2014/5/27 11:33:00
--  
我搞错了

Dim dlg As New SaveFileDialog   \'指定一个新的SaveFileDialog
dlg.Filter= "备份文件|*.MDB"   \'设置筛选器
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
    for each dt as datatable in datatables
         Dim ex As New Exporter
         ex.SourceTableName=dt.name
          ex.filepath =  dlg.filename 
          ex.Export()  
    next
End If

--  作者:aimanbao233
--  发布时间:2014/5/27 11:48:00
--  
万分感谢!已实现备份功能,后面再倒腾倒腾数据恢复功能。