以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  数据源判断 怎么实现多个ip判断呢?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=174429)

--  作者:cnsjroom
--  发布时间:2022/1/14 16:25:00
--  数据源判断 怎么实现多个ip判断呢?
If e.name = "电子审批台账" Then
    If Network.Ping("83.243.52.7",1000) = True  Then 
        e.C
    Else   If Network.Ping("192.168.0.56",1000) = True  Then 
        e.C
    Else
        e.C & e.ProjectPath & "\\Attachments\\2021.mdb;Persist Security Info=False"
    End If
End If


当前代码如上,只要第一个ip不通  就直接弹出请修改连接字符串rovider=SQLOLEDB.1;Password=Aa123456;Persist Security Info=True;User ID=sa;Initial Catalog=网安综合业务;Data Source=83.243.52.7了  

麻烦老师帮忙修正一下  如果第一个ip不通  就进入第二个ip  如果第二个ip不通  就进入第三个本地数据库


--  作者:有点蓝
--  发布时间:2022/1/14 16:29:00
--  
就是是上面的判断方法
--  作者:cnsjroom
--  发布时间:2022/1/14 16:33:00
--  回复:(有点蓝)就是是上面的判断方法
If e.name = "电子审批台账" Then
    If Network.Ping("83.243.52.7",1000) = True  Then 
        e.Conn ection String = "Provider=SQLOLEDB.1;Password=Aa123456;Persist Security Info=True;User ID=sa;Initial Catalog=网安综合业务;Data Source=83.243.52.7"
    Else   If Network.Ping("192.168.0.56",1000) = True  Then 
        e.Conn ection String = "Provider=SQLOLEDB.1;Password=Aa123456;Persist Security Info=True;User ID=sa;Initial Catalog=网安综合业务;Data Source=192.168.0.56"
    Else
        e.Conn ectio nString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & e.ProjectPath & "\\Attachments\\陈正海2021.mdb;Persist Security Info=False"
    End If
End If

可是为什么不能达到效果呢?应当是第一个不通 就第二个啥  第二个不通就第三个啥   可以为什么第一个不通   就直接弹出修改第一个的连接字符串了呢?

--  作者:有点蓝
--  发布时间:2022/1/14 16:34:00
--  
肯定第二个也不通
--  作者:cnsjroom
--  发布时间:2022/1/14 16:57:00
--  回复:(有点蓝)肯定第二个也不通
第二个是通的  当第一个不通的时候  我手动修改弹出的字符ip 为第二个ip  就可以正常登录进系统    
--  作者:有点蓝
--  发布时间:2022/1/14 17:12:00
--  
打开命令窗口测试
msgbox(Network.Ping("192.168.0.56",1000) = True)

有些地址可能因为防火墙/路由的原因禁止ping的

--  作者:程兴刚
--  发布时间:2022/1/14 18:12:00
--  
这个判断的是链接数据源的名称,而不是判断通不通的问题,狐表执行的是允许多数据源机制,只要您添加了多数据源并添加了外部表,是一定要链接的,数据源链接不应当公开给所有用户,一定是高级管理员,否则,丢了用户名和密码,该数据源的数据库随时随地被人为破坏!
--  作者:cnsjroom
--  发布时间:2022/1/14 18:18:00
--  回复:(程兴刚)这个判断的是链接数据源的名称,而不...
程老师 有没有比较好的解决方法或例子  谢谢!
--  作者:lgzhao
--  发布时间:2022/1/14 18:55:00
--  
如果是远程的话,楼主这个方法当网络不好的时候启动时间会很长。之前我试过一个,启动时间10分钟,假死机状态,估计是等待数据源的反馈。
修改链接字符串这个等于让出数据库权限给了所有用户。只适用于你自己用。

我是这么搞的供你参考:
用C#写个简单的登录窗口,封装成DLL给foxtable程序在beforeopenproject事件中调用。
所有的登录验证都通过DLL程序用web访问服务器的服务,验证通过后服务器返回加密的链接字符串过来,解密后把字符串返回给foxtable主程序。

登录窗口内可以给出登录选项、服务器网址等内容。这样可以随时灵活切换服务器,不需要改代码。

加密字符串的逻辑做的复杂些,多加点盐,安全性也该也凑合了。

Foxtable自带的登录方式要求必须先连通数据源再验证用户名密码,不是很安全,也不够灵活。只适合开发人员经常陪着用户的场景。
[此贴子已经被作者于2022/1/14 18:58:16编辑过]

--  作者:程兴刚
--  发布时间:2022/1/14 20:21:00
--  
对于我这种半调子程序员来说,只能算我蒙着了,其实foxtable也有禁止显示设置链接数据库方法的,当时我提出过这个问题,记得贺老师改进了的,有非开发者和非管理员是不会弹出的方法的!