以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  从字符串“”到类型“Double”的转换无效---  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98757)

--  作者:zhangjian222200
--  发布时间:2017/4/6 14:09:00
--  从字符串“”到类型“Double”的转换无效---

图片点击可在新窗口打开查看此主题相关图片如下:qq图片2017040614095555555555555.png
图片点击可在新窗口打开查看
手机行输入:18961305238,然后直接点击“注册”按钮,弹出1、2,弹出窗口,显示上述内容,中断执行
Dim e As RequestEventArgs = args(0)                             \'验证页面(注册第1页)
Select Case e.Path
    Case "valid_register.htm"
        Dim wb As New weui
        Dim num As String = e.PostValues("isj") \'验证手机号
        msgbox(num)
        Dim dr As DataRow \'定义输入的手机号,所在的行(以便于下面代码内查找此行)
        Dim sjcz As String                       \'定义手机存在
        Dim yzmm As String = e.PostValues("imm") \'验证密码
        Dim yzxb As String = e.PostValues("sxb") \'验证性别
        Dim yzfwxy As String = e.PostValues("fuwuxieyi") \'验证服务协议
        
        Dim pattern As String = "^[1][345789][0-9]{9}$"
        Dim txt = num
        msgbox(1)
        Dim rgx = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
        msgbox(2)
——————————————————————粉线之间代码改了
        If num.length = "" Then
                msgbox(3)
            e.WriteString("手机不能为空!")
            Return ""
        End If
        msgbox(4)

        If rgx.isMatch(txt) = False Then
            e.WriteString("请输入正确的手机号!")
            Return ""
        End If
        msgbox(5)

        If rgx.isMatch(txt) = True Then  \'(num.length <> 11)
            dr = DataTables("会员资料").sqlFind("手机 = \'" & num & "\'")
            If dr IsNot Nothing Then
                e.WriteString("手机不能重复!")
                Return ""
            End If
        End If
        msgbox(6)
——————————————————————-

        If yzmm = "" Then
            e.WriteString("密码不能为空!")
            Return ""
        ElseIf yzmm <> "" AndAlso (yzmm.Length > 12)  Then
            e.WriteString("密码不能大于12位!")
            Return ""
        ElseIf yzmm <> "" AndAlso (yzmm.Length < 6)  Then
            e.WriteString("密码不能小于6位!")
            Return ""
        End If
        
        If yzxb = "" Then
            e.WriteString("性别不能为空!")
            Return ""
        ElseIf yzxb = "注册后,性别不可更改!" Then
            e.WriteString("请选择性别!")
            Return ""
        End If
        
        If yzfwxy <> "是" Then
            e.WriteString("未确认服务协议!")
            Return ""
        End If
       
        Dim drs As DataRow = DataTables("会员资料").AddNew()
        Dim drbianh As String = DataTables("会员资料").SQLCompute("Max(会员编号)") + 1
        e.AppendCookie("drbianhao",drbianh) \'在客户端存储Cookie(保存新增的会员编号)
        
        If drs IsNot Nothing Then
            drs("会员编号") = drbianh
            drs("手机") = e.PostValues("isj")
            drs("密码") = e.PostValues("imm")
            drs("性别") = e.PostValues("sxb")
            drs("注册日期") = Date.Today
            drs("会员等级") = "普通会员"
            drs.save()
        End If
        
        \'With wb.AddMsgPage("","msgpage","注册成功", "本地自助服务,为您婚恋交友之路保驾护航") \'生成成功提示页
        \'.AddButton("btn1","完善资料","/fillout.htm")
        \'End With
        wb.InsertHTML("<meta http-equiv=\'Re-fresh\' con-tent=\'0; ur-l=/zhucwc.htm\'>") \'那么直接跳转页面
        e.WriteString(wb.Build) \'生成网页
End Select
[此贴子已经被作者于2017/4/6 20:02:35编辑过]

--  作者:有点色
--  发布时间:2017/4/6 14:14:00
--  

ElseIf (num.length <> "")

 

获取长度是数字,不能和字符串比较。


--  作者:zhangjian222200
--  发布时间:2017/4/6 14:28:00
--  
按2楼改了,

改了的代码,写在1楼粉色线之间,问题还在

手机行输入:18961305238,然后直接点击“注册”按钮,弹出1、2,依然弹出1楼的窗口
[此贴子已经被作者于2017/4/6 14:28:51编辑过]

--  作者:zhangjian222200
--  发布时间:2017/4/6 15:32:00
--  
注释了1楼下面几行就好了,但问题为什么不能这样输入

        If num.length = "" Then
                msgbox(3)
            e.WriteString("手机不能为空!")
            Return ""
        End If

[此贴子已经被作者于2017/4/6 15:46:25编辑过]

--  作者:有点色
--  发布时间:2017/4/6 15:43:00
--  

不是说得很清楚吗?length得到的是数字,不能和字符串""比较

 

你可以写成 If num = "" Then


--  作者:zhangjian222200
--  发布时间:2017/4/6 15:47:00
--  
另外,当什么也不输入时,点击注册按钮
弹窗提示:
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2017.3.18.1
错误所在事件:自定义函数valid_register
详细错误信息:
调用的目标发生了异常。
值不能为空。
参数名: input

--  作者:有点色
--  发布时间:2017/4/6 16:53:00
--  

 不知道你改成怎样的了。你加入msgbox定位错误位置再说。