以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请帮修改代码?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123630)

--  作者:wjhjhj
--  发布时间:2018/8/19 22:15:00
--  请帮修改代码?

在自动义用户系统登录设计中,在“用户管理”窗口的AfterLoad事件中,代码如下:

Dim lst As WinForm.ListBox = e.Form.Controls("ListBox1")
lst.ComboList = _UserTable.SQLGetComboListString("Name","","用户编号")
If Lst.Items.Count > 0 Then
     lst.SelectedIndex = 0
End If

只能提取user表中Name列不重复的用户,相同用户只提取了一个,要提取所有Name列的用户(相同用户),代码怎样修改,请指教。谢谢!


--  作者:有点蓝
--  发布时间:2018/8/19 22:21:00
--  
你的逻辑本身就有问题,登录用户肯定是不允许有同名的
--  作者:wjhjhj
--  发布时间:2018/8/19 22:27:00
--  
因姓名有相同的,所以增加了“身份证”列来区别。但发现修改用户时,“用户管理”窗口,姓名相同只能显示一个。请帮修改一下代码。谢谢!
[此贴子已经被作者于2018/8/19 22:28:21编辑过]

--  作者:有点蓝
--  发布时间:2018/8/19 22:39:00
--  
同名建议使用工号,或者部门+姓名(类似:销售部.张三),或者张三2、张三3这种。不建议把身份证号码放到登录窗口公开谁都知道

如果一定要用,也应该依然是显示一个,然后把同名下的不同身份证列出来供选择,就是要选2次。

同名列2个出来基本没有意义,逻辑本身就是错的

--  作者:wjhjhj
--  发布时间:2018/8/19 22:52:00
--  

是这样的,但在“用户管理”窗口中,“更改用户”时,无法选择未显示的用户(重复姓名)进行修改。请指教?


--  作者:有点蓝
--  发布时间:2018/8/19 23:06:00
--  
不能有同名的登录用户。
--  作者:wjhjhj
--  发布时间:2018/8/22 17:27:00
--  
根据自定义用户二修改用户(UsrName)为姓名-身份证(UserNameCard),代码事件如下:
\'自定义用户系统,"更改用户"窗口AfterLoad事件。
Dim UserNameCard As String
Dim UserGroup As String
Dim UserRoles As String
Dim PassWord As String
Dim dr As DataRow
If Forms("用户管理").Opened Then \'正常打开
    UserNameCard = Forms("用户管理").Controls("ListBox1").SelectedItem
Else
    UserNameCard = _UserNameCard \'_UserNameCard为全局变量,用于保存当前用户名
    e.Form.Controls("UserNameCard").Enabled = False
    e.Form.Controls("UserGroup").Enabled = False
    e.Form.Controls("UserRoles").Enabled = False
End If
e.Form.Text = e.Form.Text & "-" & UserNameCard
dr = _UserTable.SQLFind("[姓名身份证] = \'" & UserNameCard & "\'")
If dr IsNot Nothing Then
    e.Form.Controls("UserNameCard").Value = UserNameCard
    e.Form.Controls("UserGroup").Value = dr("Group")
    e.Form.Controls("UserRoles").Value = dr("Role")
    e.Form.Controls("PassWord").Value = DecryptText(dr("PassWord"),"wjh","jyj")
Else
    MessageBox.Show("用户不存在或者已经被删除!","提示",MessageBoxButtons.OK)
    e.Form.Close()
End If

\'自定义用户系统,"更改用户"窗口的确定按钮Click事件。
Dim UserNameCard As String = e.Form.Controls("UserNameCard").Value
Dim UserGroup As String  = e.Form.Controls("UserGroup").Value
Dim UserRoles As String  = e.Form.Controls("UserRoles").Value
Dim PassWord As String = e.Form.Controls("PassWord").Value
Dim OldUserNameCard As String
Dim Parts() As String = e.Form.Text.Split("-"c)
OldUserNameCard =  Parts(Parts.Length -1)
If UserNameCard = "" OrElse UserGroup = "" Then
    Messagebox.show("请输入用户名和用户分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
Dim dr As DataRow = _UserTable.SQLFind("[姓名身份证]= \'" & OldUserNameCard & "\'")
If dr IsNot Nothing Then
    dr("姓名身份证") = UserNameCard
    dr("Group") = UserGroup
    dr("Role") = UserRoles
    dr("Password") = EncryptText(PassWord,"wjh","jyj")
    dr.Save()
    If Forms("用户管理").Opened Then
        With Forms("用户管理").Controls("ListBox1")
            .Items(.SelectedIndex) = UserNameCard
        End With
    End If
    e.Form.Close
Else
    Messagebox.show("更改用户失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
运行结果:修改用户信息后,点击“确定”按钮,提示"更改用户失败!",请帮修改一下代码,谢谢!

[此贴子已经被作者于2018/8/22 17:28:33编辑过]

--  作者:有点蓝
--  发布时间:2018/8/22 17:35:00
--  
msgbox("[姓名身份证]= \'" & OldUserNameCard & "\'"

上面代码显示什么内容?数据库有没有对应的记录?

--  作者:wjhjhj
--  发布时间:2018/8/22 17:58:00
--  
显示是:[姓名身份证]= ‘1’
--  作者:有点蓝
--  发布时间:2018/8/22 20:05:00
--  
数据库有[姓名身份证]= ‘1’的记录吗?