以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [分享]动态切换数据源,供参考  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188164)

--  作者:tongliaozyr
--  发布时间:2023/9/5 16:22:00
--  [分享]动态切换数据源,供参考
动态切换数据源,供参考

Dim lx As String = "Access 2000/2003" \'数据库类型
Dim value1, name1 As String
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter = "青橙接口文件|*.zjk" \'设置筛选器
dlg.InitialDirectory = ProjectPath & "数据库\\"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    name1 = dlg.FileName\'数据库名称
    Dim sjy As String = Rand.NextString(16) \'随机生成,避免重复
    Connections.Add(sjy, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & name1 & ";Persist Security Info=False")
    If lst.Contains("A1_qdk") Then
        
       \'可以进一步判断,列名等是否与当前表一致
        
        For Each frm As WinForm.Form In forms \'关闭主窗口以外的所有窗口,确保没有其他窗口打开
            If frm.Name <> "主窗口" And frm.Opened Then
                frm.close()
            End If
        Next 
      
       
        value1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & name1 & ";Persist Security Info=False"
        
        Dim s As String = ""
        \'遍历当前属于此数据源的表
        For Each dt As DataTable In DataTables
            If dt.C Then
                s += "|" & dt.name
            End If
        Next
        s = s.Trim("|")
        
        \'卸载表
        DataTables.Unload(s)
        If Connections.Contains("青橙") Then
            Connections.Delete("青橙")
        End If
        
        
        Connections.add("青橙", value1) 
        DataTables.load(s) 
        
        \'  Application.Restart()            \'系统重新启动    
        MainTable = Tables("A1_qdk")
    End If 
End If
[此贴子已经被作者于2023/9/6 8:51:51编辑过]

--  作者:有点蓝
--  发布时间:2023/9/5 16:54:00
--  
多谢分享。

按理2个数据源的表格应该是一致的,不过为什么不直接从"青橙"里获取需要卸载的表名,而要新添加一个sjy数据源,再去获取要遍历的表名呢。

--  作者:moseser
--  发布时间:2023/9/5 17:09:00
--  回复:(tongliaozyr)[分享]动态切换数据源,供参考
感谢分享
--  作者:moseser
--  发布时间:2023/9/5 17:11:00
--  回复:(有点蓝)多谢分享。按理2个数据源的表格应该是...
dlg.Filter = "青橙接口文件|*.zjk" \'设置筛选器

这个的意思,是筛选 的.zjk 文件吧?  是自定义的文件吗?
还是.mdb文件,可以自定义成其他的扩展名?

--  作者:tongliaozyr
--  发布时间:2023/9/6 7:43:00
--  
那段代码是判断拟打开的表是否与当前表一致的,一直则导入,有差异进行相应处理或者不再导入。
[此贴子已经被作者于2023/9/6 8:23:51编辑过]

--  作者:tongliaozyr
--  发布时间:2023/9/6 7:45:00
--  
.mdb文件,直接改的扩展名,便于识别而已。

--  作者:有点蓝
--  发布时间:2023/9/6 8:34:00
--  
这里的代码不完整,看不出有判断【拟打开的表是否与当前表一致

    \'遍历当前属于此数据源的表
    For Each dt As DataTable In DataTables
        If dt.C Then
            s += "|" & dt.name
        End If
    Next

--  作者:tongliaozyr
--  发布时间:2023/9/6 8:53:00
--  
重新编辑了一下,请指正
--  作者:有点蓝
--  发布时间:2023/9/6 9:05:00
--  
还是没有哦,估计是某些关键词被网站屏蔽了,可以这样处理一下,修改帖子,选中部分内容,设置一下斜体等样式,然后重新发布


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2023/9/6 9:05:46编辑过]