Foxtable(狐表)用户栏目专家坐堂 → 设置BeforeConnectOuterDataSource代码后的一个问题


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

主题:设置BeforeConnectOuterDataSource代码后的一个问题

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


加好友 发短信
等级:幼狐 帖子:182 积分:1592 威望:0 精华:0 注册:2016/11/10 10:14:00
设置BeforeConnectOuterDataSource代码后的一个问题  发帖心情 Post By:2017/8/9 21:52:00 [只看该作者]

我有两套数据库,一个在本地,一个在阿里云上,想按照帮助文档中BeforeConnectOuterDataSource这一节第六个例子操作一下,让开发者手动设置连接字符串,但是把代码:

If e.User.Type = UserTypeEnum.Developer Then
  e.EditConnectionString()

End
If


加到项目事件BeforeConnectOuterDataSource后,保存项目退出,再以开发者身份登录系统后,只出现狐表的启动画面和进度条,然后就没有然后了,什么反应都没有了(我是点击项目在桌面的快捷方式进入系统的)。
而双击FoxTable程序启动狐表,然后再打开我的项目是可以的,但是有运行错误提示:“未将对象引用设置到对象的实例”,关闭两次错误提示后才能弹出用户登录界面,请问老师,这是怎么回事呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 22:14:00 [只看该作者]

1、你升级到最新版foxtable了没有?

 

2、报错,是哪个事件报错?  http://www.foxtable.com/webhelp/scr/1485.htm

 


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


加好友 发短信
等级:幼狐 帖子:182 积分:1592 威望:0 精华:0 注册:2016/11/10 10:14:00
  发帖心情 Post By:2017/8/9 22:21:00 [只看该作者]

我的已经是最新版本了

 

报错是BeforeConnectOuterDataSource事件

 


图片点击可在新窗口打开查看此主题相关图片如下:error.jpg
图片点击可在新窗口打开查看

 

我是直接把帮助文档的代码复制到事件中去的。


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


加好友 发短信
等级:幼狐 帖子:182 积分:1592 威望:0 精华:0 注册:2016/11/10 10:14:00
  发帖心情 Post By:2017/8/9 22:22:00 [只看该作者]

如果把代码删掉后,点击我的项目在桌面的快捷方式,则会正常启动了

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 22:33:00 [只看该作者]

你的用户表是外部数据源?你要先连上这个数据源,才能出现登陆窗口的。

 

If e.Name <> "Users" AndAlso e.User.Type = UserTypeEnum.Developer Then

    e.EditConnectionString()
End If


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


加好友 发短信
等级:幼狐 帖子:182 积分:1592 威望:0 精华:0 注册:2016/11/10 10:14:00
  发帖心情 Post By:2017/8/10 23:19:00 [只看该作者]

是的,老师,我是用外部表作为用户表,按照您的指点一切正常了。
现在我希望功能更进一步,如果是总经理和总管登录系统的话,则连接阿里云上的远程数据源,如果是其他用户登录的话,则连接店内的本地数据源。
但是还是有问题。
我的BeforeConnectOuterDataSource代码如下:

If e.Name = "LocalUsers" Then
    e.C
End If

’------------------如果没有下面的代码,则系统启动一切正常

’以下用于从项目文件夹中的ip文件读取远程服务器IP地址

Dim IPAdd As String
Dim ipFile As String = ProjectPath & "RemoteIP.txt"
If Filesys.FileExists(ipFile) Then
    Dim ip As String = FileSys.ReadAllText(ipFile)
    IPAdd = ip
End If

’以下判断,如果是总经理或总管登录,则先ping远程服务器,如果ping通,则连接远程数据源,如果不通,则连接本地数据源

If e.User.Group = "General Manager" Or e.User.Group = "Superviser" Then
    If Network.Ping(IPAdd,5000) Then
        If e.Name = "ChoiceData" Then
            e.ConnectionString = “远程数据源连接字符串”
        End If
    Else
        If e.Name = "LocalData" Then
            e.ConnectionString = “本地数据源连接字符串”
        End If
    End If
Else
    If e.Name = "LocalData" Then     ’如果不是总经理或者总管,则直接连接本地数据源
        e.ConnectionString = “本地数据源连接字符串”
    End If
End If

但是保存退出,点击项目的快捷方式重新启动项目后,依然是只有狐表启动画面,然后就什么都没有了。还是通过狐表可以打开项目,但是报错内容和昨天上面的是一模一样的。
这两天一直被这个问题困惑,用户表所在的外部数据源已经先于判断语句连接了,为啥还是有错误的?
另外,我还有一个疑问,如果项目中比如说有4个数据源,如果BeforeConnectOuterDataSource事件中不写代码,是不是项目启动后,这4个数据源都会被连接?比如说通过代码只连接其中两个,那另外两个会不会被连接上呢?
是在太困扰了,希望老师给予指点,谢谢。
[此贴子已经被作者于2017/8/10 23:21:59编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/11 0:04:00 [只看该作者]

这样就比较麻烦了......因为你用的是外部数据源的用户表。必须等候数据源加载完毕,才会出现登陆窗口的......

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=103342&skin=0

 


 回到顶部