以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  修改口令处窗口报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87989)

--  作者:hopestarxia
--  发布时间:2016/7/24 12:43:00
--  修改口令处窗口报错
你好大红袍老师,我这个报错还是在上次向您请教育的修改口令的问题处。

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.23.1
错误所在事件:窗口,修改口令,Button1,Click
详细错误信息:
未将对象引用设置到对象的实例。
此主题相关图片如下:xhkl.png
按此在新窗口浏览图片
想在原来的贴子说明情况,但是回复中好像不能上传图片。

我最早的问题"
我现在设计的程序是以开发者的身份登录加入了操作员,

然后其他操作员以后工作中设计是可以自行修改自己的口令,在项目中增加了一个"修改口令"的功能按钮,点击该按钮后则出现了图片中的窗口,

操作员直接在新口令后面的方框中(TextBox1)输入新的口令,然后点击下方的确认(Button1)按钮,则可实现了该操作员自己口令的修改.

保存在关联的SQL表(USER)中还是以加密类型储存."

大红袍老师指点修正后最后的语句为:“
Dim str1 As String = e.form.Controls("TextBox1").Text

Dim str2 As String = e.form.Controls("TextBox2").Text

Dim dr As DataRow = DataTables("user").SqlFind("name = \'" & user.name & "\'")

msgbox(dr("config") & vbcrlf & MD5Encrypt(str1))

If dr("config").Contains(MD5Encrypt(str1)) Then
    dr("config").Replace(MD5Encrypt(str1), MD5Encrypt(str2))

msgbox(dr("config") & vbcrlf & MD5Encrypt(str1) & vbcrlf & MD5Encrypt(str2))
    dr.save
    msgbox("修改成功")    
End If”


恢复了一下系统,重装上开发版权,加入代码就发现报错了。

用老师前面的语句也发现要报错,但是检查好像不是我系统改变后环境造成的,

感觉后面是在这段“If dr("config").Contains(MD5Encrypt(str1)) Then

    dr("config").Replace(MD5Encrypt(str1), MD5Encrypt(str2))

msgbox(dr("config") & vbcrlf & MD5Encrypt(str1) & vbcrlf & MD5Encrypt(str2))
    dr.save
    msgbox("修改成功")    
End If”中运行过程事造成的报错。


--  作者:大红袍
--  发布时间:2016/7/24 14:57:00
--  

Dim str1 As String = e.form.Controls("TextBox1").Text
Dim str2 As String = e.form.Controls("TextBox2").Text

Dim dr As DataRow = DataTables("user").SqlFind("name = \'" & user.name & "\'")
If dr Is Nothing Then
    msgbox("没有找到对应的行")
Else
    msgbox(dr("config") & vbcrlf & MD5Encrypt(str1))
   
    If dr("config").Contains(MD5Encrypt(str1)) Then
        dr("config").Replace(MD5Encrypt(str1), MD5Encrypt(str2))
        msgbox(dr("config") & vbcrlf & MD5Encrypt(str1) & vbcrlf & MD5Encrypt(str2))
        dr.save
        msgbox("修改成功")
    End If
End If


--  作者:hopestarxia
--  发布时间:2016/7/24 18:15:00
--  
提示成功,但实际上密码并没有修改过来。

用户表是关联到SQL数据库下按帮助建立的user表。

麻烦老师再给看看是什么地方的问题。

--  作者:hopestarxia
--  发布时间:2016/7/25 9:04:00
--  
一开始的时候已经定义字段了啊,
Dim str1 As String = e.form.Controls("TextBox1").Text

Dim str2 As String = e.form.Controls("TextBox2").Text




--  作者:hopestarxia
--  发布时间:2016/7/25 10:07:00
--  
 dr("config").Replace(MD5Encrypt(str1), MD5Encrypt(str2)) 
这儿我还没有理解,看语句是用(str2)去替换(str1)值,也可以说是赋值了的啊。

而USER中CONFIG字段包含了“用户组,用户密码,用户角色三个值。如下示例数据:
Group 财务部 PassWord EmIR5WBjrFGjO7SHZdBWwQ== Type 2 Role 查看本部不编辑

如果那儿用dr("config") =  MD5Encrypt(str2)这句,表中就只有密码转找为MD5Encrypt格式的内容了。
这样系统还是无法读取的呢。

这一句里有多句,用户关联到SQL表后,这一列值的内容太多,还真是头痛,请高手们再帮帮忙指导啊。

--  作者:大红袍
--  发布时间:2016/7/25 10:41:00
--  

改改

 

Dim str1 As String = e.form.Controls("TextBox1").Text
Dim str2 As String = e.form.Controls("TextBox2").Text

Dim dr As DataRow = DataTables("user").SqlFind("name = \'" & user.name & "\'")
If dr Is Nothing Then
    msgbox("没有找到对应的行")
Else
    If dr("config").Contains(MD5Encrypt(str1)) Then
        dr("config") = dr("config").Replace(MD5Encrypt(str1), MD5Encrypt(str2))
        dr.save
        msgbox("修改成功")
    End If
End If


--  作者:hopestarxia
--  发布时间:2016/7/26 23:25:00
--  
谢谢大家的指点,谢谢大红袍老师。