Foxtable(狐表)用户栏目专家坐堂 → 判断单位用户首次登陆


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

主题:判断单位用户首次登陆

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106610 积分:542227 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/25 12:00:00 [只看该作者]

那就把单位账号和密码存入数据库中

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


加好友 发短信
等级:三尾狐 帖子:774 积分:8830 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2019/11/25 14:47:00 [只看该作者]

存入数据库还有个问题,就是数据源的切换问题,因为要根据单位名称来决定连接哪个数据源?是不是另外弄个数据源记录所有ComputerId及对应的数据源名称,下次连接先找ComputerId然后再直接连接数据源,但ComputerId也会变的
[此贴子已经被作者于2019/11/25 14:49:40编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

单独使用一个数据库存储单位名称,这个数据库只是为了应付登录验证,不需要切换

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


加好友 发短信
等级:三尾狐 帖子:774 积分:8830 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2019/11/25 17:05:00 [只看该作者]

不好意思,还是没太理解,可否再详细指点下。同一个升级路径,要求不同的单位账号连接不同的数据库,第一次登录的时候,需要输入单位账号和密码,以后每次升级都不需要再输入单位账号和密码。觉得还是需要单独弄个数据库把每台电脑对应的单位账号信息记录下才能实现。

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106610 积分:542227 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/25 17:20:00 [只看该作者]

另外建一个数据库会吧?这个数据库只建一个表,添加单位账号和密码列,再添加一个机器码列,这个会吧?

把这个数据库添加到数据源里,这个数据源不需要变动,也就是实际至少会有2个数据源,一个不变,一个根据选择的单位变化。然后afteropenproject事件,到这个表查询是否有这台电脑的机器码对应的数据,如果有就取对应的单位账号作为数据库名称。如果没有就打开单位登录窗口,登录后把数据保存到这个表中。

其它逻辑和2楼的用法都一样的,只不过是把数据保存到设置中改为保存到数据库中而已

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


加好友 发短信
等级:三尾狐 帖子:774 积分:8830 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2019/11/25 19:36:00 [只看该作者]

谢谢!

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


加好友 发短信
等级:三尾狐 帖子:774 积分:8830 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2019/11/27 23:48:00 [只看该作者]

我思路如下,通过机器码对应的单位名称,切换外部数据源对应的数据库名称。先在数据源A的机器码表中查询机器码对应的单位名称,然后在数据源A的用户授权表中找到单位名称对应的数据源IP、密码、数据库名称及用户名,生成e.ConnectionString的链接字符串,然后在BeforeConnectOuterDataSource设置如下代码,希望连接外部数据源的时候能切换到单位名称对应的数据库,但未能切换成功,是否是因为还未链接数据源A所以无法提取相关信息的缘故。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:代码.txt



 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106610 积分:542227 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/28 9:16:00 [只看该作者]

BeforeConnectOuterDataSource事件

If e.Name = "外部数据源" AndAlso OpenFileargs.Count > 0 Then
    e.ConnectionString = OpenFileargs(0)
End If

afteropenproject事件

If OpenFileargs.Count = 0 Then
    Dim cmd1 As New SQLCommand
    cmd1.ConnectionName = "数据源A"
    cmd1.CommandText = "SELECT 单位名称 From {机器码} where 机器码 = '" & ComputerId & "'"
    Dim dw As String = cmd1.ExecuteScalar
    If dw > "" Then
        Dim cmd2 As New SQLCommand
        Dim dt2 As DataTable
        cmd2.ConnectionName = "数据源A"
        cmd2.CommandText = "SELECT * From {用户授权} whwre 单位名称 = '" & dw & "'"
        dt2 = cmd2.ExecuteReader
        If dt2.DataRows.Count > 0 Then
            Dim dr2 As DataRow = dt2.DataRows(0)
            Dim s1 As String = dr2("数据源_密码")
            Dim s2 As String = dr2("数据源_用户名")
            Dim s3 As String = dr2("数据源_数据库名称")
            Dim s4 As String = dr2("数据源_IP")
            Dim cs As String = "Provider=SQLOLEDB.1;Password=" & s1 & ";Persist Security Info=True;User ID=" & s2 & ";Initial Catalog=" & s3 & ";Data Source=" & s4
            Syscmd.Project.Open(ProjectFile,cs)
            Return
        End If
    End If
End If

afteropenproject事件类似这里的用法:http://www.foxtable.com/webhelp/topics/2495.htm

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


加好友 发短信
等级:三尾狐 帖子:774 积分:8830 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2019/11/28 13:37:00 [只看该作者]

理解了,数据源可以实现切换。还有个问题,我另外建了用户登录窗口,所以内置的用户管理用了默认用户登录。当我想用开发者或者管理者登录的时候,可以用ctrl进入,但现在由于是又重新打开项目即以默认用户登录,可否实现当我前面用开发者或者管理员登录时便最终也以相应身份登录

 回到顶部
帅哥,在线噢!
有点蓝
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106610 积分:542227 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/28 14:30:00 [只看该作者]

用ctrl打开项目,使用开发者登录进入

 回到顶部
总数 22 上一页 1 2 3 下一页