Foxtable(狐表)用户栏目专家坐堂 → 更换sql数据源


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

主题:更换sql数据源

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


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
更换sql数据源  发帖心情 Post By:2022/1/25 14:10:00 [只看该作者]

蓝总:您好!
    之前已经已经发布了应用程序,后来考虑业务需要,原来的服务器配置跟不上需求,所以需要更换一台服务器作为数据源,现在两台服务器数据库一模一样,表也一样,怎么利用BeforeConnectOuterDataSource,直接更改系统数据源链接字符串,更换数据库地址、数据库、端口以及密码,实现一键更换所有用户端使用新数据源。把数据库链接信息放到表里可以吗?当然原数据库还有效,不然其他用户端就无法登陆了。

备用方法:我直接把程序更新好,发布后,利用ftp远程更新,感觉麻烦,尤其是不涉及程序更新,只是更换服务器。

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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/25 14:33:00 [只看该作者]

BeforeConnectOuterDataSource写了什么代码?

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


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2022/1/25 15:34:00 [只看该作者]

还没写呢?还没思路?蓝老师

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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/25 15:37:00 [只看该作者]

那就参考BeforeConnectOuterDataSource帮助做,里面有各种用法。如果改数据源不想更新程序,就把IP地址放到配置文件里,读取文件更新数据源连接字符串即可

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


加好友 发短信
等级:一尾狐 帖子:461 积分:4295 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2022/1/25 16:19:00 [只看该作者]

蓝总:
If e.Name = "知识" Then
Tables("服务器设置").Position =0 '移动到第一行,以免出错
    Dim
 IP As String = e.User.ExtendedValues("
trim(Tables("服务器设置").current("服务器IP"))"'获得用户更新的IP
    Dim sjk As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("数据库名"))"'获得用户更新的数据库名
    Dim user As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("账户"))"'获得用户更新的数据库名
    Dim password As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("密码"))"'获得用户更新的数据库密码
    Dim dk As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("端口"))"'获得用户更新的数据库密码
    If IP > "" '如果用户自己更新了IP
        '则用用户输入的IP替换原来的IP
Tables("服务器设置").Position =1 '移动到第二行,以免出错
        e.ConnectionString = e.ConnectionString.Replace(
"
trim(Tables("FTP配置信息").current("地址"))", IP)用新
e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("数据库名"))", sjk)用新
e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("账户"))", user)用新
e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("密码"))", password)用新
e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("端口"))", dk)用新
    End If
End
 
If

我把新数据库信息写在Tables("服务器设置")第一行,原数据库写在第二行。当我更新第一行时,数据源信息自动更新,可以吗?

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


加好友 发短信
等级:超级版主 帖子:109728 积分:558356 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/25 16:34:00 [只看该作者]

不可以,这时候还没有连接数据源,表格还没有加载无法使用的。

如果是内置用户可以使用扩展属性
如果是外部用户,只能使用配置文件

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


加好友 发短信
等级:小狐 帖子:304 积分:2091 威望:0 精华:0 注册:2017/11/19 9:46:00
  发帖心情 Post By:2022/1/25 17:05:00 [只看该作者]

用foxtable服务端做个web服务,客户端beforeopenproject事件里访问该网址并验证,之后服务端发给客户端数据库字符串。将来有变动仅改服务端即可。

 回到顶部