Foxtable(狐表)用户栏目专家坐堂 → [求助]老师,这个随机筛选如果实现,帮忙写下代码


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

主题:[求助]老师,这个随机筛选如果实现,帮忙写下代码

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/5 21:58:00 [显示全部帖子]

请上传实例测试


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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/8 16:32:00 [显示全部帖子]

举例说明一下,怎么测试,输入什么条件?什么地方有问题?什么结果才是正确的?

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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/8 21:29:00 [显示全部帖子]

建议按7楼说的,增加一个逻辑列。

然后分3次处理,比如先筛选树符合冲,并且未勾选的数据,然后在筛选结果随机挑选参考:http://www.foxtable.com/webhelp/topics/2963.htm。

接着按同样的方式筛选处理稳、保


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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/9 10:37:00 [显示全部帖子]

不是

冲筛选一次,然后选出需要的结果比如36个;接着稳筛选一次,选出需要的结果比如40个;接着保筛选一次,选出需要的结果比如20个;

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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/10 8:45:00 [显示全部帖子]

1、集合用count,不是length。有问题的时候学会翻翻帮助:http://www.foxtable.com/webhelp/topics/0217.htm

2、既然要取筛选的结果,应该从table里取数,而不是datatable
……
'开始生成筛选条件
Dim tj As String
For Each filter2 As String In Xkmys
    tj = tj & "'" & filter2 & "',"
Next
tj = "[次选科目] In (" & tj.trim(",") & ")"
DataTables("基础数据").ReplaceFor("确定导入", False)

If Filter > "" Then
Filter = Filter & " and 确定导入=false"
End If
If tj > "" Then 
    Filter = Filter & " and " & tj
End If

Tables("基础数据").Filter = Filter
Dim cnt As Integer = Tables("基础数据").Rows.Count
Dim nds As Integer = e.Form.Controls("CSL").text '要抽取的记录数
Tables("基础数据").StopRedraw()
Do
    Dim idx As Integer = rand.Next(0, cnt)
    Dim dr As Row = Tables("基础数据").Rows(idx)
        dr("确定导入") = True
        nds = nds - 1
Loop While nds > 0
Tables("基础数据").Filter = "[确定导入] = True"
Tables("基础数据").ResumeRedraw()
Tables("基础数据").Sort = "预估分 DESC" '按"低分等效"列降序排列
e.Form.Controls("Label6").Text = "专业筛选完毕!."
……

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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/10 14:13:00 [显示全部帖子]

应该是合成的筛选条件有问题,建议冲、稳、保分开3个不同的变量存储条件。或者干脆分开3个按钮,避免混淆

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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/10 17:05:00 [显示全部帖子]

把3个按钮的代码按顺序放到一起。

或者另外建一个按钮,分别调用这3个按钮:http://www.foxtable.com/webhelp/topics/2309.htm

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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/10 20:06:00 [显示全部帖子]

不用管14楼,重新把3个按钮的代码按顺序放到一起。如果变量重名的更换不同名称

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


加好友 发短信
等级:超级版主 帖子:109462 积分:556966 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/11 11:29:00 [显示全部帖子]

学会调试
Dim Filter As String
If e.Form.Controls("选择历史").Checked = True Then
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & "首选科目 = '历史'"
End If
msgbox(Filter
If e.Form.Controls("选择物理").Checked = True Then
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & "首选科目 = '物理'"
End If
msgbox(Filter
……
'添加分数区间条件

If e.Form.Controls("CGF").text > "" Then
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & "预估分 <= " & e.Form.Controls("CGF").text
End If
msgbox(Filter)
If e.Form.Controls("FS").text > "" Then
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & "预估分 >= " & e.Form.Controls("FS").text
End If
msgbox(Filter)
……
msgbox(Filter) ‘
Tables("基础数据").Filter = Filter

 回到顶部