Foxtable(狐表)用户栏目专家坐堂 → [求助]自定义用户管理修改密码问题(已解决)


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

主题:[求助]自定义用户管理修改密码问题(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]自定义用户管理修改密码问题(已解决)  发帖心情 Post By:2011/7/13 17:53:00 [只看该作者]

将帮助中的案例加到项目中,共四个用户组,发现其他三个用户组都可以修改密码,一个用户组(填报)修改密码出现“更改用户失败!”的提示,不知问题出在哪里?请各位老师帮助看看。谢谢!!

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目.zip

 

密码是123或888

[此贴子已经被作者于2011-7-13 22:25:25编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/13 20:46:00 [只看该作者]

刚才又试了一下,用户名是汉字、字母或数字,修改密码都可以成功,但是,如果加上横杠,修改密码就提示“更改用户失败!”,看来代码可能不兼容用户名带横杠的实例,各位老师是否可以看看,如何调整代码,使代码可兼容带横杠的用户名。谢谢!!

代码如下:

Dim UserName As String = e.Form.Controls("UserName").Value
Dim UserGroup As String  = e.Form.Controls("UserGroup").Value
Dim PassWord As String = e.Form.Controls("PassWord").Value
Dim OldUserName As String
Dim cmd As New SQLCommand
Dim Parts() As String = e.Form.Text.Split("-"c)
OldUserName =  Parts(Parts.Length -1)
cmd.C
If UserName = "" OrElse UserGroup = "" Then
    Messagebox.show("请输入用户名和用户分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.CommandText = "Update {Users} Set [Name] = '" & UserName & "',[Group] = '" & UserGroup
cmd.CommandText = cmd.CommandText & "', [Password] = '" & Password & "' Where [Name]= '" & OldUserName & "'"
If cmd.ExecuteNonQuery = 1 Then '返回1表示更改成功
    If Forms("用户管理").Opened Then
        With Forms("用户管理").Controls("ListBox1")
            .Items(.SelectedIndex) = UserName
        End With
    End If
    e.Form.Close
Else
    Messagebox.show("更改用户失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/13 21:00:00 [只看该作者]

显示一下合成的SQL语句,你就知道原因了:

 

 

cmd.CommandText = "Update {Users} Set [Name] = '" & UserName & "',[Group] = '" & UserGroup
cmd.CommandText = cmd.CommandText & "', [Password] = '" & Password & "' Where [Name]= '" & OldUserName & "'"
MessageBox.show(cmd.commandtext)


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/13 21:20:00 [只看该作者]

测试情况如下,请狐爸老师帮助看看,问题在哪里?谢谢!!

 

 


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

 


 


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

 


 


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

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/13 21:32:00 [只看该作者]

你前面的代码:

 

Dim Parts() As String = e.Form.Text.Split("-"c)
OldUserName = Parts(Parts.Length -1)

 

当用户名为01-1的时候,OldUserName = 1,使得你合成的语句的条件为:

 

Where [Name] = ‘1’

 

可是表中只有名为01-1的用户,并没有名为1的用户,所以出错是必然的。


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/13 21:38:00 [只看该作者]

谢谢狐爸老师的分析。那么下一步我该怎么修改呢?请狐爸老师指教。谢谢!!

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/13 22:00:00 [只看该作者]

我不明白你为什么要这么写:

 

Dim Parts() As String = e.Form.Text.Split("-"c)
OldUserName = Parts(Parts.Length -1)

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目120.rar

 


 


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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/13 22:25:00 [只看该作者]

谢谢狐爸老师,问题解决了,十分感谢狐爸老师的热情帮助,再次谢谢!!


 回到顶部