Foxtable(狐表)用户栏目专家坐堂 → sql数据源设置问题


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

主题:sql数据源设置问题

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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
sql数据源设置问题  发帖心情 Post By:2022/5/11 17:46:00 [显示全部帖子]

前提:服务器有多个ip,设置ConnectionString里面的ip默认是192.168.0.150;

在打开项目的时候,
project有个ip的txt文件,如果文件有内容(我电脑上的时192.168.1.150),则用文件里面的ip替换掉192.168.0.150;
如果没有则换192.168.1.150以及192.168.111.150尝试连接

我这个项目在打开的时候能正常连接,加载数据,但是在开发界面>>外部数据表,管理外部数据表的时候提示无法连接,
查看设置的ConnectionString仍然是192.168.0.150,然后报错如下,我该怎么解决

ps:更新版本前好像没有遇到这样的问题


图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2022-05-11_17-25-03.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
  发帖心情 Post By:2022/5/12 9:17:00 [显示全部帖子]

BeforeConnectOuterDataSource事件代码

Dim ipFile As String = e.ProjectPath & "ip.txt"
If e.Name = "foxtable人事数据库" OrElse e.name = "foxtable" OrElse e.name = "mirror" Then
    Dim ip As String = FileSys.ReadAllText(ipFile)
    If ip <> "" Then
        e.ConnectionString = e.ConnectionString.Replace("192.168.0.150",ip)
    Else 
        If Connections.TryConnect(e.ConnectionString) Then '如果第一个IP接通
            filesys.WriteAllText(e.projectpath & "ip.txt","192.168.0.150",False)
            
        Else If Connections.TryConnect(e.ConnectionString.Replace("192.168.0.156", "192.168.1.150")) Then '如果第一个IP接通
            filesys.WriteAllText(e.projectpath & "ip.txt","192.168.1.150",False)
            e.ConnectionString = e.ConnectionString.Replace("192.168.0.150","192.168.1.150")
            
        Else If Connections.TryConnect(e.ConnectionString.Replace("192.168.0.150", "192.168.111.150")) Then
            filesys.WriteAllText(e.projectpath & "ip.txt","192.168.111.150",False)
            e.ConnectionString = e.ConnectionString.Replace("192.168.0.150","192.168.111.150")
            
        End If
    End If

连接字符串:
Provider=SQLOLEDB.1;Password=********;Persist Security Info=True;User ID=fox_user;Initial Catalog=mirror;Data Source=192.168.0.150

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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
  发帖心情 Post By:2022/5/12 10:03:00 [显示全部帖子]

老师,您给的代码测试能通,能正常进入项目且加载数据,但是在开发界面>>外部数据表,管理外部数据表的时候报一样的错误

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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
  发帖心情 Post By:2022/5/12 10:24:00 [显示全部帖子]

虽然管理外部数据表的时候报错,但是能正常执行sql

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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
  发帖心情 Post By:2022/5/12 10:31:00 [显示全部帖子]

刚才用正确的ip添加了一个新的数据源,管理外部表窗口的时候,选择其他数据源还是会报错,但是选择这个含正确ip的就不会

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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
  发帖心情 Post By:2022/5/12 10:49:00 [显示全部帖子]

那我在使用外部数据源/管理外部表的时候,得把连接字符串改掉?

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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
  发帖心情 Post By:2022/5/12 10:54:00 [显示全部帖子]

For Each cn As Connection In Connections
    Output.Show("名称:" & cn.Name)
    Output.Show("链接字符串:" & cn.ConnectionString)
Next

在帮助里面发现了这个,发现连接字符串已经改成正确的ip了,可是在菜单中进入外部数据源和外部数据表的时候还是报错;
这个问题确实不太清楚

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


加好友 发短信
等级:童狐 帖子:235 积分:2067 威望:0 精华:0 注册:2020/5/4 17:14:00
  发帖心情 Post By:2022/5/12 11:00:00 [显示全部帖子]

谢谢老师,不过还是认为直接用改过的Connectionstring会好一丢丢
For Each cn As Connection In Connections
    Output.Show("名称:" & cn.Name)
    Output.Show("链接字符串:" & cn.ConnectionString)
Next

 回到顶部