Foxtable(狐表)用户栏目专家坐堂 → 局域网与外部网络访问数据库切换链接问题


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

主题:局域网与外部网络访问数据库切换链接问题

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
局域网与外部网络访问数据库切换链接问题  发帖心情 Post By:2021/7/28 11:13:00 [只看该作者]

需要实现,在局域网访问时候数据库链接使用内部局域网IP访问,在出差外网访问的时候,切换访问web数据源访问,在BeforeConnectOuterDataSource
设置以下代码,结果没作用
默认设置的数据库链接是采用的局域网内的连接,目前是判断这个链接不上,就换成这个WEB数据源访问
If TryConnectHost("192.168.3.10")  = False Then
    If Network.Ping("192.168.3.10",1000) = False Then '如果第一个IP无法接通
        Select Case e.Name
            Case "shujk"
                Dim sb As New StringBuilder
                sb.AppendLine("http://222.168.xxx.xxx:8000/DataServer.htm")
                sb.AppendLine("-FormData-")
                sb.AppendLine("UserName:xxxxxx")
                sb.AppendLine("Password:xxxxxxxxxxx")
                e.ConnectionString = sb.ToString()
     End If
End If

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


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/28 11:29:00 [只看该作者]

提示什么错误,新建一个项目,直接连接这个web数据源有没有问题?

调试看看

If TryConnectHost("192.168.3.10")  = False Then
msgbox(1)
    If Network.Ping("192.168.3.10",1000) = False Then '如果第一个IP无法接通
msgbox(e.Name)
        Select Case e.Name
            Case "shujk"
                Dim sb As New StringBuilder
                sb.AppendLine("http://222.168.xxx.xxx:8000/DataServer.htm")
                sb.AppendLine("-FormData-")
                sb.AppendLine("UserName:xxxxxx")
                sb.AppendLine("Password:xxxxxxxxxxx")
                e.ConnectionString = sb.ToString()
msgbox(e.ConnectionString)
     End If
End If

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2021/7/28 18:16:00 [只看该作者]

---------------------------
错误
---------------------------
创建外部连接"shujk"失败,请联系管理员或开发者,重新设置数据链接字符串!
---------------------------
确定   
---------------------------
直接显示这个没弹出内容

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


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/29 8:37:00 [只看该作者]

新建一个项目,直接连接这个web数据源有没有问题?

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2021/7/29 11:10:00 [只看该作者]

直接连接没有问题,现在好像问题在BeforeConnectOuterDataSource这个地方,没有先做判断,而是先进行了局域网的数据库连接,然后连接不上局域网数据库报错,报错后才出现msgbox(1)、msgbox(e.Name)弹窗

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


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

是不是设置了多个数据源?

去掉这个判断试试:If TryConnectHost("192.168.3.10")  = False Then

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2021/7/29 11:20:00 [只看该作者]

If TryConnectHost("192.168.3.10")  = False Then
msgbox(1)
    If Network.Ping("192.168.3.10",1000) = False Then '如果第一个IP无法接通
msgbox(e.Name)
        Select Case e.Name
            Case "shujk"
                Dim sb As New StringBuilder
                .....
     Case  "另外一个"
......
msgbox(e.ConnectionString)
     End If
End If
有2个,另外一个也包在里面了,之前If TryConnectHost("192.168.3.10")  = False Then没有加的,就是不行,所以以为是Network.Ping没判断出来,加了这个

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


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/29 11:35:00 [只看该作者]

换种方式判断:http://www.foxtable.com/webhelp/topics/1944.htm

Dim ErrMsg As String
If Connections.TryConnect(e.ConnectionString,ErrMsg) = False Then
     Select Case e.Name
            Case "shujk"
                Dim sb As New StringBuilder
                .....
     Case  "另外一个"
......

End If

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


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2021/7/29 14:05:00 [只看该作者]

e.Connec ti,不加判断条件
直接这样修改都不行,我怀疑是web数据源与正常的sql数据源切换有问题

我设置当前数据源shujk  为web数据源,正常能连接
BeforeConnectOuterDataSource里只设置

e.C onnec tionStr ing = "Pr ovid er=SQ LOLEDB.1;Pa ssword=xxxx;P ersist Sec urity Info=True;U ser ID=sa;Initial C atalog=xxxx;Dat a Source=xxx x"

进去后数据库就没改过来还是原来的,反过来也是一样的
[此贴子已经被作者于2021/7/29 14:06:58编辑过]

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


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/29 14:09:00 [只看该作者]

肯定是改了的,只不过这个代码并不会影响菜单里原数据源的设置。直接在数据源里是看不出来的。

我测试改为web数据源是可以的。或者做个例子发过来测试

 回到顶部
总数 12 1 2 下一页