Foxtable(狐表)用户栏目专家坐堂 → 找不到行,提示未将对象引用设置到对象的实例


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

主题:找不到行,提示未将对象引用设置到对象的实例

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


加好友 发短信
等级:七尾狐 帖子:1553 积分:11003 威望:0 精华:0 注册:2016/9/12 11:18:00
找不到行,提示未将对象引用设置到对象的实例  发帖心情 Post By:2017/4/18 21:51:00 [只看该作者]

'筛选验证
Dim e As RequestEventArgs = args(0)                             '验证页面(注册第2页)
Select Case e.Path
    Case "p_tayaoqingshaixyz.htm"
        Dim wb As New weui
        
        Dim drshouj As String = e.Cookies("isj")  '从cookie取用户手机
        Dim dr As DataRow
        If drshouj <> "" Then
           dr = DataTables("会员资料").sqlFind("[会员编号] = '" & drshouj & "'")
           msgbox(drshouj)   '这里执行了,显示了手机号18961309989
           msgbox("我的手机号:" & dr("手机"))  ’这里没有执行,提示未将对象引用设置到对象的实例。
                                                                  ’“会员资料”表、“会员编号”列都是存在的,18961309989行存在,咋回事?看了很久                                                                     ’都没有找到原因,麻烦看看
        Else
           msgbox("您尚未登录!")
        End If
        
        Dim qis As String = e.PostValues("isr1") '验证起始日期   '测试代码:msgbox(e.PostValues("isr"))
        Dim qisrq As Date  '定义起始日期(转换后可用的内容)
        Date.TryParse(qis, qisrq)
        Dim qis_y As Integer = qisrq.Year
        Dim qis_m As Integer = qisrq.Month
        Dim qis_d As Integer = qisrq.Day
        
        Dim jiez As String = e.PostValues("isr2") '验证截至日期
        Dim jiezrq As Date  '定义起始日期(转换后可用的内容)
        Date.TryParse(jiez, jiezrq)
        Dim jiez_y As Integer = jiezrq.Year
        Dim jiez_m As Integer = jiezrq.Month
        Dim jiez_d As Integer = jiezrq.Day
        
        Dim bjy As Integer = jiez_y - qis_y  '比较年
        Dim bjm As Integer = jiez_m - qis_m  '比较月
        Dim bjd As Integer = jiez_d - qis_d  '比较日
        
        If qis <> "" AndAlso jiez <> "" Then  '当2个表格都填写了的时候(比较年份)
            If bjy < 0 Then
                e.WriteString("截止日期必须大于起始日期!")
                Return ""
            End If
        End If
        
        If qis <> "" AndAlso jiez <> "" Then  '当2个表格都填写了的时候(比较月份)
            If bjy = 0 AndAlso bjm < 0 Then
                e.WriteString("截止日期必须大于起始日期!")
                Return ""
            End If
        End If
        
        If qis <> "" AndAlso jiez <> "" Then  '当2个表格都填写了的时候(比较日期-天)
            If bjy = 0 AndAlso bjm = 0 AndAlso bjd < 0 Then
                e.WriteString("截止日期必须大于起始日期!")
                Return ""
            End If
        End If
        
        msgbox(33)
        If dr IsNot Nothing Then
            dr("TA邀请_起始日期") = e.PostValues("isr1") '保存起始日期   '测试代码:msgbox(e.PostValues("isr"))
            dr("TA邀请_截止日期") = e.PostValues("isr2") '保存截止日期
            dr.save()
            msgbox(44)
        Else
            msgbox("保存失败!请登录后,再使用会员中心-TA邀请筛选功能!")  ’执行了这里
        End If
        'With wb.AddMsgPage("","msgpage","注册成功", "本地自助服务,为您婚恋交友之路保驾护航") '生成成功提示页
        '.AddButton("btn1","完善资料","/fillout.htm")
        'End With
        msgbox(55)
        wb.InsertHTML("<meta http-equiv='Refresh' c>") '那么直接跳转到会员中心,他邀请页面
        e.WriteString(wb.Build) '生成网页
End Select

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


加好友 发短信
等级:六尾狐 帖子:1249 积分:9474 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2017/4/18 21:56:00 [只看该作者]

这种报错,一般是你引用的对象为空值。

对SQLFind()方法找到的行,要进行一个判断

If dr IsNot Nothing Then


End If
[此贴子已经被作者于2017/4/18 21:59:29编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/19 8:42:00 [只看该作者]

1、你使用的是sqlFind方法,你新增的行,如果没有save的话,是查不到其值的。

 

2、有可能你的查询条件不正确,确实是没有符合的行(比如多了空格之类的、特殊字符之类的)

 

3、你对dr要进行判断,找到或者没找到。


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


加好友 发短信
等级:七尾狐 帖子:1553 积分:11003 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2017/4/19 10:01:00 [只看该作者]

测试账户:18961305239 密码:222222
登录网址:http://127.0.0.1/login.htm

弄了很久还是没搞定,还请瞧瞧
sqlfind使用很好的:登录后自动跳转到首页。在首页底部,任意点击按钮“查看TA的资料”,将进入details.htm,这个details.htm就使用了sqlfind,使用很好

sqlfind使用不成功:但是如果在首页/index.htm,点击页面底部“筛选设置”,进入/index_shaix.htm,填入内容,然后执行验证和保存是在:/index_shaixyz.htm,这个页面的sqlfind用法一样,找不到手机所在行

这是项目文件夹:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:langwo(2017-4-19).rar
这是web文件夹:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:web(2017-4-19).rar
这是web文件夹根目录下的图片文件夹(因文件大,拆开上传,这里只有展示照,删除了生活照)
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:201704(2017-4-19).rar
[此贴子已经被作者于2017/4/19 10:02:23编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/19 10:41:00 [只看该作者]

 回复4楼,测试没问题。请认认真真测试。

 

 而且不要每次都sqlfind对应的数据。你登录只有,应该使用cookie保存用户的所有信息的才对。


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


加好友 发短信
等级:七尾狐 帖子:1553 积分:11003 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2017/4/19 10:57:00 [只看该作者]

回楼上,你测试,下面代码中msgbox(44),执行了吗?
Dim e As RequestEventArgs = args(0)                             '首页筛选验证页面
Select Case e.Path
    Case "index_shaixyz.htm"
        Dim wb As New weui
        
        Dim drshouj As String = e.Cookies("isj")  '从cookie取用户手机
        Dim dr As DataRow = DataTables("会员资料").sqlFind("会员编号 = '" & drshouj & "'")
        msgbox(11)
        Dim zuixnl As String = e.PostValues("zxnl") '验证最小年龄   '测试代码:msgbox(e.PostValues("isr"))
        Dim zuidnl As String = e.PostValues("zdnl") '验证最大年龄
        
        If zuidnl < zuixnl Then
            msgbox(22)
            e.WriteString("最大年龄必须大于最小年龄!")
            Return ""
        End If
        
        msgbox(33)
        If dr IsNot Nothing Then
            dr("首页筛选_最小年龄") = e.PostValues("zxnl") '验证最小年龄   '测试代码:msgbox(e.PostValues("isr"))
            dr("首页筛选_最大年龄") = e.PostValues("zdnl") '验证最大年龄
            dr("首页筛选_TA的学历") = e.PostValues("tdxl") '验证TA的学历
            dr("首页筛选_婚姻状况") = e.PostValues("hyzk") '验证婚姻状况
            dr.save()
            msgbox(44)  
        Else
            msgbox("保存失败!请登录后,再使用首页筛选功能!")
        End If
        'With wb.AddMsgPage("","msgpage","注册成功", "本地自助服务,为您婚恋交友之路保驾护航") '生成成功提示页
        '.AddButton("btn1","完善资料","/fillout.htm")
        'End With
        msgbox(55)
        wb.InsertHTML("<meta http-equiv='Refresh' c>") '那么直接跳转到登录页面
        e.WriteString(wb.Build) '生成网页
End Select

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/19 11:59:00 [只看该作者]

 你查询的是 会员编号,你的会员编号存放的不是手机号啊。改成

 

 Dim dr As DataRow = DataTables("会员资料").sqlFind("手机 = '" & drshouj & "'")


 回到顶部