以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [分享]动态切换数据源,供参考 (http://foxtable.com/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 -- 还是没有哦,估计是某些关键词被网站屏蔽了,可以这样处理一下,修改帖子,选中部分内容,设置一下斜体等样式,然后重新发布 [此贴子已经被作者于2023/9/6 9:05:46编辑过]
|