蓝老师好,我按照教程做了下面的修改:1、系统原本有个局域网连接的数据源,名字叫gcerp。
2、首先添加一个远程的数据源,测试成功。
比如数据源名称叫“yuancheng”,连接字符串如下:Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=GC_ERP;Data Source=1234567.uttcare.com,9999
3、在BeforeConnectOuterDataSource事件中添加下面的代码:
If e.Name = "gcerp" Then
If Network.Ping("192.168.1.201",1000) = False Then '如果第一个IP无法接通
e.Connec tion String = e.Connec tion String.Replace("192.168.1.201", "1234567.uttcare.com") '注:1234567.uttcare.com是虚拟域名的地址,已经做了端口映射。
End If
End If
3、问题:无论怎么改,只要代码第一句是“If e.Name = "gcerp" Then” 那么系统启动的时候就非要连接第一个数据源不可,绝对不会切换到第二个数据源,系统会报错“连接GCERP错误,请联系管理员”然后直接退出。如果代码改为
If Network.Ping("192.168.1.201",1000) = False Then '如果第一个IP无法接通
e.Connec tion String = e.Connec tion String.Replace("192.168.1.201", "1234567.uttcare.com")
End If
则出现“PING错误”详细信息为“不知道这样的主机”,然后尝试改为虚拟域名对应的IP地址,比如123.22.33.45
If Network.Ping("192.168.1.201",1000) = False Then '如果第一个IP无法接通
e.Connec tion String = e.Connec tion String.Replace("192.168.1.201", "123.22.33.45")
End If
结果仍然相同“PING错误”详细信息为“不知道这样的主机”
4、最后没办法了,我直接修改第一个数据源的信息,把“yuancheng”数据源的信息强行复制粘贴到第一个数据源“gcerp”,并把BeforeConnectOuterDataSource事件中代码删除。连接远程数据库成功。
但是这样一来,我每更新一次都要发布两个不同连接的版本,另外,办公室的人经常要移动办公,切换数据源,非常麻烦。还是想请老师指点下BeforeConnectOuterDataSource事件的代码要怎么写?
另外说明下,教程中说的“注意此事件必须通过e.User来引用用户。”不知道有没有关系?我没有使用系统自带的用户管理功能,全部是自己写的用户管理代码。