Foxtable(狐表)用户栏目专家坐堂 → 不知道什么问题的问题


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

主题:不知道什么问题的问题

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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
不知道什么问题的问题  发帖心情 Post By:2020/4/20 17:35:00 [只看该作者]

之前做的工资条程序,近期进行了功能升级。修改后的HttpRequest事件代码为:

前面省略
'---------------------------------------------------------------------------------------

Select Case e.path
    Case "Remuneration"  '工资信息
        Dim UserId As String
        Dim UserName As String
        Dim sb As New StringBuilder
        sb.AppendLine("<meta name='viewport' c>")
        If e.GetValues.ContainsKey("code") Then '如果通过授权链接跳转而来,就根据传递过来的code参数调用接口,获取用户的UserId
            'MessageBox.Show("通过授权链接进入")
            Dim ul As String  = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}"
            ul = CExp(ul,Functions.Execute("GetQYAccessToken"),e.GetValues("code"))
            Dim hc As new HttpClient(ul)
            Dim jo As JObject = JObject.Parse(hc.GetData)
            If jo("UserId") IsNot Nothing Then
                UserId = jo("UserId")
            End If
        Else
            UserId = e.Cookies("userid") 
        End If
        Dim Verified As Boolean
        Dim drc As DataRow = DataTables("员工花名册").SQLFind("企业微信号ID ='" & UserId & "'") '根据openid找出对应的行
        If UserId  > "" AndAlso drc IsNot Nothing  AndAlso drc("微信权限") = True '授权成功
            Verified  = True
            UserName = drc("姓名")
            e.AppendCookie("userid",UserId) '将userid存储在Cookie中
        ElseIf e.GetValues.ContainsKey("code") = False Then '如果授权失败,且不是通过授权链接跳转而来,那么就跳转到授权链接
            Dim ul As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&agentid={2}&state=STATE#wechat_redirect"
            Dim ul2 As String = UrlEncode(Vars("yyzy"))
            ul = CExp(ul,Vars("qyid"),ul2,Vars("yyid"))
            sb.Append("<meta http-equiv='Refresh' c>") '跳转到授权链接%3a8090
            e.WriteString(sb.ToString)
            Return
        End If
        If Verified = False Then
            e.AppendCookie("userid",UserId)
            e.WriteString("<meta http-equiv='Refresh' c>")
        Else
            e.WriteString("<meta http-equiv='Refresh' c>")
        End If
        e.WriteString(sb.ToString)
    Case "Remuneration3"
        If e.Cookies.ContainsKey("userid") =False Then
            e.WriteString("非法访问")
            Return
        End If
        e.AsyncExecute = True
        Functions.AsyncExecute("Remuneration3",e)
    Case "Remuneration2"
        If e.Cookies.ContainsKey("userid") =False Then
            e.WriteString("非法访问")
            Return
        End If
        e.AsyncExecute = True
        Functions.AsyncExecute("Remuneration2",e)  
End Select


新增的内部函数Remuneration3

Dim e As RequestEventArgs = args(0)
Dim wb As New weui
Dim UserId As String
UserId = e.Cookies("userid")
Dim xingming As String
Dim sfz As String
If e.PostValues.ContainsKey("xingming") AndAlso e.PostValues.ContainsKey("sfz") Then
    xingming = e.PostValues("xingming")
    sfz = e.PostValues("sfz")
End If
Dim drc9 As DataRow = DataTables("员工花名册").SQLFind("身份证号 = '"& sfz &"'")
If drc9 IsNot Nothing AndAlso drc9("姓名") = xingming AndAlso drc9.IsNull("企业微信号ID") Then
    drc9.SQLSetValue("企业微信号ID",userid)
    e.WriteString("<meta http-equiv='Refresh' c>")
ElseIf drc9 IsNot Nothing AndAlso drc9.IsNull("企业微信号ID") = False Then
    e.WriteString(drc9("姓名") & "的企业微信号已占用,请联系公司人力资源部进行核对!")
End If

wb.AddPageTitle("","pageheader","薪酬管理平台",Vars("dwmc"))
If e.PostValues.ContainsKey("xingming") AndAlso e.PostValues.ContainsKey("sfz") Then 
    wb.AddTopTips("","toptip2","无授权信息,请与公司人力资源管理部门核对!").msec = 2000 '
End If
wb.AddForm("","form1","Remuneration3")
With wb.AddInputGroup("form1","ipg1")
    .AddInput("xingming","姓名:","text")
    .AddInput("sfz","身份证号:","text")
End With
With wb.AddButtonGroup("form1","btg1",True)
    .Add("btn1", "实名认证", "submit")
End With
wb.AddToast("","t3", "初次使用,请进行实名认证",0).msec= 1000
e.WriteString(wb.Build) '生成网页
e.Handled = True


现在少数人访问没问题,人稍微多点就报错,一个错误提示的HttpRequest出错,具体不详,另外一个就是直接程序奔溃,非法关闭。请帮看看哪里需要调整

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110783 积分:563847 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/20 17:53:00 [只看该作者]

试试

Dim e As RequestEventArgs = args(0)
Dim wb As New weui
Dim UserId As String
UserId = e.Cookies("userid")
Dim xingming As String
Dim sfz As String
If e.PostValues.ContainsKey("xingming") AndAlso e.PostValues.ContainsKey("sfz") Then
    xingming = e.PostValues("xingming")
    sfz = e.PostValues("sfz")
End If
If sfz > "" Then
    Dim cmd As new SQLCommand
    cmd.C
    cmd.CommandText = "SELECT * FROM {员工花名册} WHERE 身份证号 = ?"
    cmd.Parameters.Add("@身份证号",sfz)
    Dim dt As DataTable = cmd.ExecuteReader(True)
    If dt.DataRows.Count > 0
        Dim drc9 As DataRow = dt.DataRows(0)
        If  drc9("姓名") = xingming AndAlso drc9.IsNull("企业微信号ID") Then
            drc9("企业微信号ID") = userid
            dt.Save
            e.WriteString("<meta http-equiv='Refresh' c>") 这里1楼不全,自己补上
            e.Handled = True
            Return
        ElseIf drc9.IsNull("企业微信号ID") = False Then
            e.WriteString(drc9("姓名") & "的企业微信号已占用,请联系公司人力资源部进行核对!")
            e.Handled = True
            Return
        End If
    End If
End If
wb.AddPageTitle("","pageheader","薪酬管理平台",Vars("dwmc"))
If e.PostValues.ContainsKey("xingming") AndAlso e.PostValues.ContainsKey("sfz") Then
    wb.AddTopTips("","toptip2","无授权信息,请与公司人力资源管理部门核对!").msec = 2000 '
End If
wb.AddForm("","form1","Remuneration3")
With wb.AddInputGroup("form1","ipg1")
    .AddInput("xingming","姓名:","text")
    .AddInput("sfz","身份证号:","text")
End With
With wb.AddButtonGroup("form1","btg1",True)
    .Add("btn1", "实名认证", "submit")
End With
wb.AddToast("","t3", "初次使用,请进行实名认证",0).msec= 1000
e.WriteString(wb.Build) '生成网页
e.Handled = True

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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
  发帖心情 Post By:2020/4/20 21:10:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.1.19.19
错误所在事件:自定义函数Remuneration3
详细错误信息:
调用的目标发生了异常。
OleDbCommand.Prepare 方法要求所有参数具有显式设置的类型。


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110783 积分:563847 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/20 21:21:00 [只看该作者]

调试看哪句代码出错?

Dim cmd As new SQLCommand
cmd.ConnectionName = “数据源名称”

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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
报错  发帖心情 Post By:2020/4/20 21:42:00 [只看该作者]


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


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110783 积分:563847 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/20 21:48:00 [只看该作者]

看不出错在哪里。删除项目里的bin目录,重启项目测试

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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
  发帖心情 Post By:2020/4/20 21:58:00 [只看该作者]

我这是在内部函数里面,异步函数。
会不会和这个有关?

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110783 积分:563847 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/20 22:08:00 [只看该作者]

应该不是异步的问题,这个去掉试试就知道了。

报错2之前出错还是之后,报错2能不能弹出

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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
  发帖心情 Post By:2020/4/20 22:09:00 [只看该作者]

报错1弹出,然后就是提示这个错误:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.1.19.19
错误所在事件:自定义函数Remuneration3
详细错误信息:
调用的目标发生了异常。
OleDbCommand.Prepare 方法要求所有参数具有显式设置的类型。

报错2不弹出

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


加好友 发短信
等级:六尾狐 帖子:1348 积分:9833 威望:0 精华:0 注册:2015/6/30 8:46:00
  发帖心情 Post By:2020/4/20 22:14:00 [只看该作者]

  Dim dt As DataTable = cmd.ExecuteReader(True)
MessageBox.Show(dt.DataRows.Count )
这里检查 一下 身份请输入是否有误。
    If dt.DataRows.Count > 0

 回到顶部
总数 23 1 2 3 下一页