以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  在学习狐表官方学习及考试写法时 非微信授权登录的情况下 WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=161534)

--  作者:cnsjroom
--  发布时间:2021/3/21 14:03:00
--  在学习狐表官方学习及考试写法时 非微信授权登录的情况下 WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?
在学习狐表官方学习及考试写法时,非微信授权登录的情况下

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看
WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?
当前还没有使用微信进行测试,所以想后台直接新增用户数据进去  有没有办法呢?

方法一:无法直接保存数据
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "Insert Into WeChatUsers(OpenID,Nickname,Sex,Grade,Password,Token) Values(?,?,?,?,?,?)"
cmd1.Parameters.Add("@OpenID","1234567891")
cmd1.Parameters.Add("@Nickname","黄立望")
cmd1.Parameters.Add("@Sex","1")
cmd1.Parameters.Add("@Grade","1")
cmd1.Parameters.Add("@Password","666")
cmd1.Parameters.Add("@Token","12")
cmd1.ExecuteNonQuery

方法二:直接在项目中新增数据也是如图  

无法进行保存  只有不保存数据才能关闭项目

有没有办法解决呢?


[此贴子已经被作者于2021/3/21 18:08:27编辑过]

--  作者:有点蓝
--  发布时间:2021/3/21 22:31:00
--  
到后台数据库修改表,把“允许NULL值”除了主键全部都勾选上。
--  作者:cnsjroom
--  发布时间:2021/3/22 0:23:00
--  回复:(有点蓝)到后台数据库修改表,把“允许NULL值...
OK  谢谢老师的指导  已经可以保存了
当前新增了三个用户  运行效果提示如下:
只有1234567890这个id可以成功答题   1234567891  1234567892 两个不能答题

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


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


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

经排查如下【试题表里面有对应1234567891  1234567892的数据】

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


图片点击可在新窗口打开查看此主题相关图片如下:55.png
图片点击可在新窗口打开查看
【UsersTestForm】表里面只有1234567890 没有1234567891  1234567892的数据  初步判断 这个楼上图片提示联系客服的原因 

图片点击可在新窗口打开查看此主题相关图片如下:66.png
图片点击可在新窗口打开查看
 老师可以指导下不呢
[此贴子已经被作者于2021/3/22 0:32:51编辑过]

--  作者:有点蓝
--  发布时间:2021/3/22 8:41:00
--  
自己调试一下NewQuestion函数
--  作者:cnsjroom
--  发布时间:2021/3/22 9:39:00
--  回复:(有点蓝)自己调试一下NewQuestion函数
经按照老师的指导  做了调试
发现问题的根源:
是用户在登录的时候,无法往WeChatUsersLogin里面写登录信息,main函数是固定了nickname为张三,经在login函数里面添加了vars(“nickname”)变量后  直接添加如下红色代码运行可以往对应的WeChatUsersLogin表里面记录当前用户登录信息。问题得以解决啦!

\'Dim openid As String = vars("openid")
\'Dim nickname As String = vars("nickname")
\'MessageBox.Show(nickname)
\'
\'If openid > "" Then
    \'\'Dim dr As DataRow = DataTables("WeChatUsers").Find("OpenID = \'" & openid & "\'")
    \'
    \'Dim dtLogon As DataTable = DataTables("WeChatUsersLogin")
    \'dr = dtLogon.Find("OpenID=\'" & openid & "\' and Online = 1 and LoginTime > \'" & Date.Today & "\'")
    \'If dr Is Nothing Then
        \'dtLogon.ReplaceFor("Online",0,"OpenID=\'" & openid & "\' and Online = 1")
        \'dtLogon.RemoveFor("Online = 0")
        \'dr = dtLogon.AddNew()
        \'dr("OpenID") = openid
        \'dr("Nickname") = nickname
        \'dr("Online") = True
    \'End If
    \'\'dr("DeveloperID") = devid
    \'dr("LoginTime") = Date.Now
    \'dr("IP") = e.Request.RemoteEndPoint().Address.ToString()
    \'dr.Save
\'End If



当前点击全部错题,没有错误的题目出现,是啥回事情呢?

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

[此贴子已经被作者于2021/3/22 9:47:59编辑过]

--  作者:有点蓝
--  发布时间:2021/3/22 9:52:00
--  
首先不要使用全局变量,通过登录账号查询openid,或者干脆把openid当作登录账号

其次,如果有什么表保存不了,参考2楼的方法处理

--  作者:cnsjroom
--  发布时间:2021/3/22 10:13:00
--  回复:(有点蓝)首先不要使用全局变量,通过登录账号...
经查是T_UpdateErrorQuestions这个函数中的poenid被指定了  更改了vars("openid")后,再次运行计划任务,当前问题得以解决。

在老师的指导下,目前已经完成了整个试题系统在本地进行测试(微信公众号测试还有待域名备案通过之后方可进行)的思路学习和摸索,当前是采用了全局变量的方式来进行数据的固定传递,在一个服务启动下 多人登录的情况下是会有问题的

按照老师的指导:通过登录名查找openid之后 再直接登录 是不是同步写入cookie数据中,便于系统进行调用。

还有一个弱弱的问题:那就是项目中的exit函数,要怎么直接调用呢

--  作者:有点蓝
--  发布时间:2021/3/22 10:18:00
--  
openid写入cookie数据中使用

exit函数到页面添加一个退出按钮调用

--  作者:cnsjroom
--  发布时间:2021/3/22 11:35:00
--  回复:(有点蓝)openid写入cookie数据中使用exit函数...
exit函数代码:
Dim e As RequestEventArgs = Args(0)
Dim wb As New weui
Dim dr As DataRow = DataTables("WeChatUsersLogin").Find("[OpenID] = \'" & e.Cookies("OpenID") & "\' and Online = 1")
If dr IsNot Nothing Then
    dr("Online") = False
    dr.Save
    dr = DataTables("UsersTestForm").Find("[OpenId] = \'" & e.Cookies("OpenID") & "\' and IsCompleted = 0","TestID desc")
    If dr IsNot Nothing Then
        dr("IsCompleted") = True
        dr("CorrectRate") = dr("CorrectQty") / dr("QuestionQty")
        dr.Save
    End If
End If
e.Appendcookie("openid","")
e.Appendcookie("nickname","")
e.WriteString("<meta http-equiv=\'refresh\' c>") \'跳转到登录页
e.WriteString(wb.Build)

begin函数代码:
With wb.AddTabBar("", "tb1", 0)
        .AddPage("page1","我","./Home.png")
        If qt=1 Then
            .AddPage("page2","练习","./Test.png")
            .AddPage("page3","回顾","./Review.png")
        Else
            .AddPage("page2","考试","./Test.png")
        End If
        .AddButton("bt1","退出","./images/cell.png","exit.htm")
    End With


经过测试运行  exit函数能够清除对应的cookie值 也能够进行online在线值的取消   如果这个时候用户后退  可以回到exit之前的页面内容  可以点击查看除了开始答题按钮之外的所有内容记录  
有没有办法让用户注销之后  后退页面都不能正常浏览了呢?
是不是直接加入判断  online=false时  全部不能使用了

[此贴子已经被作者于2021/3/22 11:58:22编辑过]

--  作者:有点蓝
--  发布时间:2021/3/22 11:52:00
--  
退出时把页面所有cookie都清空,可以看看CheckToken函数