Foxtable(狐表)用户栏目专家坐堂 → 求助:利用代码实现了遍历表然后全部导出为一个数据库 现在怎么反过来进行恢复操作呢?怎么操作都没有成功


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

主题:求助:利用代码实现了遍历表然后全部导出为一个数据库 现在怎么反过来进行恢复操作呢?怎么操作都没有成功

帅哥哟,离线,有人找我吗?
有点甜
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/15 15:16:00 [只看该作者]

 动态添加数据源,然后获取表名啊

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜) 动态添加数据源,然后获取表名...  发帖心情 Post By:2015/1/15 15:54:00 [只看该作者]

代码如下:
Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")


Dim lst As List(Of String)
lst = Connections("test").GetTableNames
For Each nm As String In lst
    Output.Show(nm)
    Dim ip As New Importer
    ip.SourcePath = "C:\data\订单.mdb" '指定数据文件
    ip.SourceTableName = nm '指定要导入的表
    ip.NewTableName =nm '导入后的表名
    ip.Import()
Next


经过在命令窗口中进行测试  能够顺利导入所有的表及数据  

现在遇见一个极端问题 假设这个数据库是10号备份的  那么项目中已经有了类似的数据表及部分数据,再次运行上面的代码会出现提示已经存在同名数据源及表,系统决绝导入, 有没有办法强制导入呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/15 16:02:00 [只看该作者]

 根据datatables判断是否存在,若存在,就合并数据merger,而非导入。

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜) 根据datatables判断是否存在,...  发帖心情 Post By:2015/1/15 16:27:00 [只看该作者]

有点甜老师  我做了如下修改:
在命令窗口中运行 无法进行判断红色部分代码  因为没有实际存在TEST

求纠正 这个命令再次运行的时候 判断不存在TESE 则进行动态添加数据源  若存在就直接合并数据



For Each cn As Connection In Connections
    Output.Show("名称:" & cn.Name)
    Output.Show("链接字符串:" & cn.ConnectionString)

If cn.name <> "test" Then
    Dim lst As List(Of String)
    lst = Connections("test").GetTableNames
    For Each nm As String In lst
        If DataTables.Contains(nm) '如果存在统计表1
            Dim mg As New Merger
            mg.SourcePath = "c:\data\订单.mdb"
            mg.SourceTableName = nm
            mg.DataTableName = nm
            mg.Merge()
        Else
            Dim ip As New Importer
            ip.SourcePath = "C:\data\订单.mdb" '指定数据文件
            ip.SourceTableName = nm '指定要导入的表
            ip.NewTableName =nm '导入后的表名
            ip.Import()
        End If
    Next
Else
    Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")
End If


Next





 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜) 根据datatables判断是否存在,...  发帖心情 Post By:2015/1/15 16:29:00 [只看该作者]

进一步学习一下

项目是否可以在项目属性里面添加如下代码不  让项目启动的时候进行加载   就不在数据源管理去手动设置了
Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/15 16:30:00 [只看该作者]

 思路错了,写在上面

 

If Connections.Contains("Test") = False Then
    Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")
End If


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)?思路错了,写在上面?...  发帖心情 Post By:2015/1/15 16:37:00 [只看该作者]

已经完美  谢谢 
代码如下,供其他同学学习和参考!
If Connections.Contains("Test") = False Then
    Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")
    
    Dim lst As List(Of String)
    lst = Connections("test").GetTableNames
    For Each nm As String In lst
        If DataTables.Contains(nm) '如果存在统计表1
            Dim mg As New Merger
            mg.SourcePath = "c:\data\订单.mdb"
            mg.SourceTableName = nm
            mg.DataTableName = nm
            mg.Merge()
        Else
            Dim ip As New Importer
            ip.SourcePath = "C:\data\订单.mdb" '指定数据文件
            ip.SourceTableName = nm '指定要导入的表
            ip.NewTableName =nm '导入后的表名
            ip.Import()
        End If
    Next
End If


如果是SQL数据库 是不是直接更换上面的红色部分为SQL连接字符串即可呢?

[此贴子已经被作者于2015-1-15 16:38:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/15 16:40:00 [只看该作者]

 是的。

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜) 是的。  发帖心情 Post By:2015/1/15 16:42:00 [只看该作者]

进一步学习一下

项目是否可以在项目属性里面添加如下代码不  让项目启动的时候进行加载   就不在数据源管理去手动设置了
Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")

如果可以 这个代码应该写在那个事件里呢?

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)?思路错了,写在上面?...  发帖心情 Post By:2015/1/15 17:32:00 [只看该作者]

有点甜老师  下述代码在命令窗口中可以完美运行

但是如果在窗体按钮事件中 就无法了 直接关闭项目  求解

目前我的思路是窗体打开后 运行Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")
然后按钮事件 运行这个代码外的其他代码  

不知道可行不!

If Connections.Contains("Test") = False Then
    Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\订单.mdb;Persist Security Info=False")
    
    Dim lst As List(Of String)
    lst = Connections("test").GetTableNames
    For Each nm As String In lst
        If DataTables.Contains(nm) '如果存在统计表1
            Dim mg As New Merger
            mg.SourcePath = "c:\data\订单.mdb"
            mg.SourceTableName = nm
            mg.DataTableName = nm
            mg.Merge()
        Else
            Dim ip As New Importer
            ip.SourcePath = "C:\data\订单.mdb" '指定数据文件
            ip.SourceTableName = nm '指定要导入的表
            ip.NewTableName =nm '导入后的表名
            ip.Import()
        End If
    Next
End If
[此贴子已经被作者于2015-1-15 17:33:30编辑过]

 回到顶部
总数 34 上一页 1 2 3 4 下一页