以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- [求助]OpenQQ问题 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=141776) |
-- 作者:ezilu -- 发布时间:2019/10/10 17:38:00 -- [求助]OpenQQ问题 官方的OpenQQ可以 通过 服务端的“用户”主表信息 可以 实现 客户端 输入验证登录 功能 但是 在多用户环境下 如何通过 客户端 去修改编辑 服务端 的用户表信息呢 当然 我说的用户表信息 不单单只有官方的那几个 “部门” “姓名” “密码” “好友”四列,如果还有“地址”、“电话”等列呢 如何实现修改编辑? 麻烦大大们,谢谢
[此贴子已经被作者于2019/10/10 17:39:27编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/10/10 17:56:00 -- 使用外部数据源,客户端和服务端都连接到同一个数据库,共用一个用户表即可 |
-- 作者:ezilu -- 发布时间:2019/10/10 18:01:00 -- 但是出现错误: .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2019.10.3.1 错误所在事件:启动IMClient 详细错误信息: 已添加了具有相同键的项。 我公用外表的 主键 是设置的 _identify [此贴子已经被作者于2019/10/10 18:03:08编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/10/11 8:27:00 -- 这个错误应该是添加了重复的好友,服务端UserLogging事件的代码发上来看看 |
-- 作者:ezilu -- 发布时间:2019/10/11 11:19:00 -- 应该不会错 服务端uselogging 的代码 是官方的代码 我没改动 Dim
pts() As
String = e.UserName.Split(".")
Dim dr As DataRow dr = DataTables("用户").Find("部门 = \'" & pts(0) & "\' And 姓名 = \'" & pts(1) & "\'") If dr Is Nothing Then \'判断此用户不存在 e.Message = "用户名错误!" \'返回给登录者的提示信息 Return End If If dr("密码") <> e.Password Then \'如果密码错误 e.Message = "登录密码错误!" \'返回给登录者的提示信息 Return End If e.Success = True \'允许用户登录 \'添加存储在好友列的非本部门的好友 If dr.IsNull("好友") = False Then Dim nms() As String = dr("好友").Split(",") e.Buddies.AddRange(nms) End If \'最后添加相同部门的同事为好友 For Each dr In DataTables("用户").Select("部门 = \'" & pts(0) & "\'") Dim nm As String = dr("部门") & "." & dr("姓名") If nm <> e.UserName Then \'如果不是登录者本人 e.Buddies.Add(nm) End If Next |
-- 作者:有点蓝 -- 发布时间:2019/10/11 11:29:00 -- 那么就是用户表有重复的部门和用户名,或者有空行 另外注意: \'添加存储在好友列的非本部门的好友
If dr.IsNull("好友") = False Then Dim nms() As String = dr("好友").Split(",") e.Buddies.AddRange(nms) End If \'最后添加相同部门的同事为好友 For Each dr In DataTables("用户").Select("部门 = \'" & pts(0) & "\'") Dim nm As String = dr("部门") & "." & dr("姓名") If nm <> e.UserName Then \'如果不是登录者本人 e.Buddies.Add(nm) End If Next |
-- 作者:ezilu -- 发布时间:2019/10/11 13:23:00 -- 解决了 是相同的 部门 谢谢大大 能不能 不在客户端 绑定 外表 用户表 用户表 只在服务端,而且只能是 内部表格? 这样或许对于 用户 数据隐私安全 是不是好些? 同时又能满足 客户端 远程 编辑 修改 的想法
[此贴子已经被作者于2019/10/11 13:24:11编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/10/11 13:54:00 -- 保证服务端和客户端有完全相同的用户设置即可。也就是要维护2套用户表,并且不能有差异 |
-- 作者:ezilu -- 发布时间:2019/10/11 18:32:00 -- 理解了 那我现在有个想法: 服务端和客户端 绑定 同一个 外表后 可以正常使用openQQ了 我在客户端登录后,在外表“用户”新增了一行 表事件如下: DataRowAdded触发事件:QQClient.Send("用户增加") 然后服务端的openQQ服务端的ReceivedMessage事件中添加: If e.Message = "用户增加" Then DataTables("用户").Load End If 最后却不能使 服务端的“用户”表重新加载。。。错在哪里?大大,谢谢 |
-- 作者:有点蓝 -- 发布时间:2019/10/11 20:26:00 -- 数据要保存别人才能刷新啊。放在DataRowAdded也没有意义的,新增一空行有啥用? 另外服务端建议直接从数据源取数据,这样就不需要刷新了
|