以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  更换sql数据源  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=174653)

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

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

--  作者:有点蓝
--  发布时间:2022/1/25 14:33:00
--  
BeforeConnectOuterDataSource写了什么代码?
--  作者:lisangyu
--  发布时间:2022/1/25 15:34:00
--  
还没写呢?还没思路?蓝老师
--  作者:有点蓝
--  发布时间:2022/1/25 15:37:00
--  
那就参考BeforeConnectOuterDataSource帮助做,里面有各种用法。如果改数据源不想更新程序,就把IP地址放到配置文件里,读取文件更新数据源连接字符串即可
--  作者:lisangyu
--  发布时间: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("服务器设置")第一行,原数据库写在第二行。当我更新第一行时,数据源信息自动更新,可以吗?

--  作者:有点蓝
--  发布时间:2022/1/25 16:34:00
--  
不可以,这时候还没有连接数据源,表格还没有加载无法使用的。

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

--  作者:lgzhao
--  发布时间:2022/1/25 17:05:00
--  
用foxtable服务端做个web服务,客户端beforeopenproject事件里访问该网址并验证,之后服务端发给客户端数据库字符串。将来有变动仅改服务端即可。