Foxtable(狐表)用户栏目专家坐堂 → 学习官方每日一练 登录验证后无法进行下一步操作 麻烦老师帮忙看看 谢谢


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

主题:学习官方每日一练 登录验证后无法进行下一步操作 麻烦老师帮忙看看 谢谢

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)一样自己调试一下全局代码另外看看这...  发帖心情 Post By:2021/5/13 18:05:00 [只看该作者]

全局代码:红色部分一个都不弹出值

'执行任务的时间
Public s_TaskDate As Date
'是否正在执行任务
Public s_Tasking As Boolean

'编号生成'
Public _BizCodeBuilder As BizCodeBuilder

'不重复编号上传用,这里的用法比较简单,没有做复杂的编号规则处理
'开发测试的时候注意,如果服务器开了服务,本地也开了服务,那么可能会
Public Class BizCodeBuilder
    Private _bizcode As DataTable '直接把编号表取出到内存'
    Private _codelock As New Object

    Public Sub New()
        Dim sql = "Se lect * From [uSysBizCode] "
        _bizcode = Functions.Execute("Cmd_GetDataTable", "Q", sql, True)
MessageBox.Show("0")
    End Sub

    Public Function GetNextCode(s_name As String,Optional s_prefix As String = Nothing) As String
        SyncLock _codelock '使用锁处理并发
            Dim dr As DataRow = _bizcode.Find(CExp("BizName='{0}'", s_name))
MessageBox.Show("1")
            If dr Is Nothing Then
MessageBox.Show("2")
                '建议先在编号表中维护好需要产生编号的表,不用默认生成的编号规则'
                dr = _bizcode.AddNew()
MessageBox.Show(s_name)
                dr("BizName") = s_name 
                dr("MaxValue") = 1
                If String.IsNullOrEmpty(s_prefix) Then s_prefix = Date.now.ToString("mmss") & "BH"
                dr("Prefix") = s_prefix
                dr("Mark") = "yyyyMMdd"
                dr("MarkValue") = Date.Today.ToString("yyyyMMdd")
                dr("Length") = 4
            Else
                '这里的处理规则是按时间进行重新编号,至于是按年,月还是日,在掩码中体现'
                If dr("MarkValue") <> Date.Today.ToString(dr("Mark")) Then 
                    dr("MaxValue") = 1
                    dr("MarkValue") = Date.Today.ToString(dr("Mark"))
                Else
                    dr("MaxValue") = dr("MaxValue") + 1
                End If
            End If
            dr.Save()
            Return dr("Prefix") & dr("MarkValue") & Format(dr("MaxValue"),"0".PadLeft(dr("Length"),"0")) 
        End SyncLock
    End Function
End Class


内部函数NewQuestion 
       Dim drnew As DataRow = dt.AddNew
MessageBox.Show(_BizCodeBuilder is nothing)
                drnew("TestID") = _BizCodeBuilder.GetNextCode("UsersTestForm") 
这个红色部分弹出值    true


uSysBizCode表现在只有一行数据

此主题相关图片如下:12.png
按此在新窗口浏览图片



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


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

内部函数NewQuestion 
       Dim drnew As DataRow = dt.AddNew
MessageBox.Show(_BizCodeBuilder is nothing)
                drnew("TestID") = _BizCodeBuilder.GetNextCode("UsersTestForm") 
这个红色部分弹出值    true

说明这个变量是空值,检查一下afteropenproject事件,正常应该有一个初始化的代码的,比如:

_BizCodeBuilder = new BizCodeBuilder

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)内部函数NewQuestion  &nb...  发帖心情 Post By:2021/5/14 1:25:00 [只看该作者]

老师  经过在老师的指导下  
当前依次进行如下操作:
T_SetDefaultRandSelectionTask 利用这个函数作为计划任务进行后台生成题目
QuestionsSelection  系统随机生成答题数据
系统用户登录成功后,点练习页面  点开始按钮后
UsersTestForm  生成练习记录数据  
系统初步能够实现答题了


有一个问题:题目默认是全部提醒  数量为10   结果现在点开始按钮之后   答题的题目编号永远是1  这样答题就会永远继续下去  而不是只有10个题目  麻烦老师看看怎么修正呢?

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



  

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


加好友 发短信
等级:超级版主 帖子:106566 积分:541995 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/14 8:26:00 [只看该作者]

同样的方法,自己跟踪一下前端js、服务端代码的执行过程

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)同样的方法,自己跟踪一下前端js、服...  发帖心情 Post By:2021/5/14 9:13:00 [只看该作者]

函数GetNewAnswerHtm代码:

'用于上一题和下一题按钮的调用处理
Dim openid As String = Args(0) '用户公众号openid
Dim QuestionID As String = Args(1) '题目ID
Dim QuestionType As Integer = Args(2) '题目类型
Dim drtestid As DataRow= Args(3) '主单题目所在的行记录
MessageBox.Show(openid)     ‘可以正常弹出当前用户的id值’
Dim AnswerQty As Integer = drtestid("AnswerQty") + drtestid("AnswerCodeQty") + 1 '生成下一题的序号
MessageBox.Show(AnswerQty)    ‘永远是1’
Dim dr As DataRow
Dim jo As new JObject '使用json和js交互
jo("Seq") = AnswerQty & "|" & QuestionType & "|" & CStr(drtestid("TestID")) '题号|题目类型|主单ID
If Args.Length >= 5 Then
    jo("score") = CInt(Args(4))
End If

老师我的理解是AnswerQty永远等于1,是因为主单题目所在行记录是第一行。要解决这个问题首先得解决主单ID,那么整个主单题目表示什么名字表呢?我没有正确找到对应的内容,老师是否可以帮忙点一下!

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


加好友 发短信
等级:超级版主 帖子:106566 积分:541995 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/14 9:26:00 [只看该作者]

答题记录都在UsersAnswerForm表,Seq就是题号。看看【Dim drtestid As DataRow= Args(3) '主单题目所在的行记录】drtestid外部传进来前是怎么查询数据的

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)答题记录都在UsersAnswerForm表,Seq...  发帖心情 Post By:2021/5/14 10:37:00 [只看该作者]

我理解的是在登录成功之后  程序依次如下操作:
1、Begin函数
点击开始答题


2、NewQuestion函数开始生成练习题目

在运行时候提示【没有正确传输题目类型的值  值传输了OpenId和题目数量】

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

3、GetNewAnswerHtm函数
再显示出对应上一题与下一题的练习题目

4、NextQuestion函数 根据选择上一题还是下一题再做对应的判断

那么Dim drtestid As DataRow= Args(3) '主单题目所在的行记录】drtestid外部传进来前这个怎么查询数据    
这个在哪里可以判断呢?我没有成功找出来。
老师是否可以帮忙指点一下呢?

以下内容是专门发给有点蓝浏览


[此贴子已经被作者于2021/5/14 10:37:58编辑过]

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


加好友 发短信
等级:超级版主 帖子:106566 积分:541995 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/14 10:57:00 [只看该作者]

GetNewAnswerHtm函数在哪里被调用的,可以输出代码查到的

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)GetNewAnswerHtm函数在哪里被调用的,...  发帖心情 Post By:2021/5/14 12:19:00 [只看该作者]

我理解的是在登录成功之后  程序依次如下操作:
1、Begin函数
点击开始答题

2、GetNewAnswerHtm函数

3、NewQuestion函数调用GetNewAnswerHtm函数开始生成练习题目


4、NextQuestion函数调用GetNewAnswerHtm函数 根据选择上一题还是下一题再做对应的判断



那么Dim drtestid As DataRow= Args(3) '主单题目所在的行记录】drtestid外部传进来前这个怎么查询数据    
这个在哪里可以判断呢?我没有成功找出来。
老师是否可以帮忙指点一下呢?

 Dim p_Qty  As String = e.PostValues("cboqty")这个地方弹出是空值   貌似begin函数的题量没有传递过来  老师有没有办法解决呢?
begin函数代码:
 With wb.AddInputGroup("form1","ipg1","题型选择" & "【" & dr("Nickname") & "】")
        Dim items As String = "标准化考试"   
        Dim items2 As String = "100"
        Dim items3 As String = "请选择类别"
        If qt = 1 Then
            items = "标准题(全部)|选择题|判断题|简答题|"
            items2 = "|10|20|50|100|"
            items3 = "|党史学习|教育整顿|综合学习|其他学习|"
            If hasValue Then
                '设置本次练习选中的类型和数量
                Dim drDict As DataRow = DataTables("uSysDictionarys").Find("GroupName='做题题型' And ItemValue='" & drlast("TestType") & "'")
                If drDict IsNot Nothing Then
                    items = items.Replace(drDict ("ItemName"),"[" & drDict("ItemName") & "]")
                End If
                items2 = items2.Replace("|" & drlast("QuestionQty") & "|","|[" & drlast("QuestionQty") & "]|")
                
            End If
            items2 = items2.Trim("|")
        End If
        With .AddSelect("cbotype1","类别",items3)
            If hasValue Then .Enabled = False
        End With
        With .AddSelect("cbotype","题型",items)
            If hasValue Then .Enabled = False
        End With
        With .AddSelect("cboqty","题量",items2)
            If hasValue Then .Enabled = False
        End With
    End With
[此贴子已经被作者于2021/5/14 12:23:02编辑过]

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


加好友 发短信
等级:超级版主 帖子:106566 积分:541995 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/14 13:33:00 [只看该作者]

检查NextQuestion函数调用GetNewAnswerHtm函数的代码

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