以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码运行错误,帮忙看下~  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77240)

--  作者:jwt
--  发布时间:2015/11/13 15:32:00
--  [求助]代码运行错误,帮忙看下~
代码如下:
Dim cnt As Integer = DataTables("题库").DataRows.Count
Dim str As New List(of Integer) \'用于存储洗牌前的位置
For i As Integer = 0 To cnt -1 \'准备初始的牌
    str.add(i)
Next
For i As Integer = 1 To str.count \'洗牌测次数
    Dim rnum1 As Integer = Rand.Next(str.count -1)
    Dim rnum2 As Integer = Rand.Next(str.count -1)
    Dim temp As String = str(rnum1)
    str(rnum1) = str(rnum2)
    str(rnum2) = temp
Next
Tables("题库").StopRedraw()
DataTables("题库").ReplaceFor("抽取",False)
For i As Integer = 0 To 10- 1 \'5为要抽取的行数
    DataTables("题库").DataRows(str(i))("抽取") = True
Next
Tables("题库").Filter = "[抽取] = True"
Tables("题库").ResumeRedraw()

DataTables("题库").dataRows.delete("序号") \'清除序号列原有数据
DataTables("题库").DataCols("题目").RaiseDataColChanged()\'重置序号列
Tables("题库").save

forms("初始界面").close
forms("答题面板").open



经过测试,应该是下面这段代码有问题,附错误提示截图。
DataTables("题库").dataRows.delete("序号") \'清除序号列原有数据
DataTables("题库").DataCols("题目").RaiseDataColChanged()\'重置序号列


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



--  作者:大红袍
--  发布时间:2015/11/13 15:34:00
--  
DataTables("题库").ReplaceFor("序号", "") \'清除序号列原有数据
--  作者:jwt
--  发布时间:2015/11/13 15:42:00
--  
谢谢~又发现个问题,我在表的datacolchanged里面写的自动编号的代码运行后,是对表内所有数据的重新编码,我本意是对筛选后的10个数据重新进行序号的编码。求思路。
--  作者:大红袍
--  发布时间:2015/11/13 15:44:00
--  

Tables("题库").Filter = "[抽取] = True"

For Each r As Row In Tables("题库").Rows

    r("序号") = r.Index + 1

Next


--  作者:jwt
--  发布时间:2015/11/13 16:50:00
--  
首先感谢大红袍对上一问题的耐心解答~新问题来了~问题出在给当前行选择列赋值上。附图:
Dim rdo1 As WinForm.RadioButton
Dim rdo2 As WinForm.RadioButton
Dim rdo3 As WinForm.RadioButton
Dim rdo4 As WinForm.RadioButton
rdo1 = Forms("答题面板").Controls("RadioButton1")
rdo2 = Forms("答题面板").Controls("RadioButton2")
rdo3 = Forms("答题面板").Controls("RadioButton3")
rdo4 = Forms("答题面板").Controls("RadioButton4")

If rdo1.Checked = True Then
    DataTables("题库").DataRows("选择")="A"
Else If rdo2.Checked = True Then
    DataTables("题库").DataRows("选择")="B"
Else If rdo3.Checked = True Then
    DataTables("题库").DataRows("选择")="C"
Else If rdo4.Checked = True Then
    DataTables("题库").DataRows("选择")="D"
Else
    MessageBox.Show("请选择你的答案 !", "提示", MessageBoxButtons.Ok, MessageBoxIcon.Warning)
End If

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


--  作者:大红袍
--  发布时间:2015/11/13 17:14:00
--  
Dim cr As Row = Tables("题库").Current
 
If rdo1.Checked = True Then
    cr("选择")="A"
Else If rdo2.Checked = True Then
    cr("选择")="B"
Else If rdo3.Checked = True Then
    cr("选择")="C"
Else If rdo4.Checked = True Then
    cr("选择")="D"
Else
    MessageBox.Show("请选择你的答案 !", "提示", MessageBoxButtons.Ok, MessageBoxIcon.Warning)
End If