Foxtable(狐表)用户栏目专家坐堂 → 阿里云和局域网数据源连接


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

主题:阿里云和局域网数据源连接

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
阿里云和局域网数据源连接  发帖心情 Post By:2019/11/13 17:48:00 [只看该作者]

都是sqlserver数据库,有在同一个sqlserver中的几个(不是1个)数据库在局域网,有几个在阿里云。如果提前把所有数据库都提前连上,不在指定局域网的用户登陆系统,会有数据源不存在或连不上的报错。 该如何动态处理连接数据源啊?谢谢

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/14 8:49:00 [只看该作者]


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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/11/14 10:02:00 [只看该作者]

假设局域网中的sqlserver:IP是192.168.10.10,访问用户名是:abc 密码:abc;该局域网有多个数据库(库名:数据库A,数据库B,数据C……)
如果局域网无法访问,则不连接局域网的数据库,也不加载相应的表。该如何实现啊?谢谢
If Network.Ping("192.168.10.10",1000) = True  
  …… 
End If

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/14 10:06:00 [只看该作者]

本地建一个access数据库文件,放到项目文件夹里,里面的表结构和SqlServer的完全一样,可以没有数据。连接不到SqlServer时连接这个空的access数据库

If
 e.Name = "数据源名称" Then
    If Network.Ping("192.168.1.100",1000) = False  Then '如果第一个IP无法接通
        e.ConnectionString = 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & e.ProjectPath & "access数据库文件名.mdb;Persist Security Info=False"
    End If

End
 If

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/11/14 17:44:00 [只看该作者]

数据源比较多,该怎么获取所有数据源的名称啊(然后循环判断e.name)?

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/15 8:39:00 [只看该作者]

数据源名称应该是已知的

If e.Name = "数据源名称" Then
xxxx
elseIf e.Name = "数据源名称2" Then
xxxx
elseIf e.Name = "数据源名称3" Then
……

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/11/15 10:55:00 [只看该作者]

改成这样能行吗?(目前没在局域网中,没法测试)
For Each cn As Connection In Connections  (不知道连接数据源时,能不能获取Connections)
If e.Name=cn.Name and Network.Ping("192.168.1.100",1000) = False
   e.C & e.ProjectPath & "access数据库文件名.mdb;Persist Security Info=False"
endif
next

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/15 11:02:00 [只看该作者]

只能使用6楼的方法。添加了多少个数据源,在开发的时候应该是已知的。

何况如果多个数据库的结构是不一样的,一般不能绑定到同一个access数据库的

 回到顶部