Foxtable(狐表)用户栏目专家坐堂 → [求助]超费脑的逻辑判断,求传说级出来指点下~


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

主题:[求助]超费脑的逻辑判断,求传说级出来指点下~

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
[求助]超费脑的逻辑判断,求传说级出来指点下~  发帖心情 Post By:2015/11/13 10:42:00 [显示全部帖子]

我弄了个测评记录软件,根据得分自动给出评价,但是有个气质类型的判断,太复杂了,上来求教
这是气质类型的判断方法:
1、如果某类气质得分明显高出其他三种,均高出4分以上,则属于该种气质类型。

2、如果两种气质类型的得分很接近,两者之差小于3,但同时又明显高于其他两种类型,其高出部分超过4分以上者,则属于两种气质的混合型。

3、如果三种气质的得分很接近,之差均小于3,但又明显高于第四种者,且超过4分以上,则属于三种气质的混合型。

4、如果四种气质的得分很接近,之差均小于三,则属于无法判断的情况。

求:如果评价列为表达式列,那么表达式如何写,如果非表达式列,那代码如何写?
附软件的气质类型界面。
此主题相关图片如下:1.png
按此在新窗口浏览图片

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2015/11/13 11:22:00 [显示全部帖子]

谢谢,我再捣鼓捣鼓~顺便帮我看下另一个问题吧,随机抽取5行记录,代码如下,为啥他有时显示3行、有时4行、有时5行??


Dim cnt As Integer = DataTables("题库").DataRows.Count
Dim ids1 As New List(of Integer) '用于存储洗牌前的位置
Dim ids2 As New List(of Integer) '用于存储洗牌后的位置
For i As Integer = 0 To cnt -1 '准备初始的牌
    ids1.add(i)
Next
For i As Integer = 0 To cnt - 1 '开始洗牌
    ids2.Add(ids1(rand.Next(0,ids1.count)))
Next
Tables("题库").StopRedraw()
DataTables("题库").ReplaceFor("抽取",False)
For i As Integer = 0 To 5 - 1 '5为要抽取的行数
    DataTables("题库").DataRows(ids2(i))("抽取") = True
Next
Tables("题库").Filter = "[抽取] = True"
Tables("题库").ResumeRedraw()

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2015/11/13 11:39:00 [显示全部帖子]

额 .....代码复制过去,把表名改了后,点击按钮,没反应0.0

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2015/11/18 9:45:00 [显示全部帖子]

狐大大,没有解决,目前还是人工判断,真个系统就这个一个缺陷,好复杂0.0

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2015/11/25 10:38:00 [显示全部帖子]

最后 在评价上 进行赋值出了点问题,我把狐表开发给的内部函数导入到程序,在表的datacolchanged里加入如下代码:
If e.DataCol.Name ="气质类型_胆汁质" Or e.DataCol.Name ="气质类型_多血质" Or e.DataCol.Name ="气质类型_粘液质" Or e.DataCol.Name ="气质类型_抑郁质" Then
Dim qz1 As Integer = e.DataRow("气质类型_胆汁质")
Dim qz2 As Integer = e.DataRow("气质类型_多血质")
Dim qz3 As Integer = e.DataRow("气质类型_粘液质")
Dim qz4 As Integer = e.DataRow("气质类型_抑郁质")

Functions.Execute("气质类型",qz1,qz2,qz3,qz4)

End If

但是赋值出现了问题,如果在后面直接加上
e.DataRow("气质类型_评价") = lxs,提示未定义lxs。

附  气质类型 内部函数代码
' Args(0) '胆汁质的值
' Args(1) '多血质的值
' Args(2) '粘液质的值
' Args(3) '抑郁质的值
Dim lxs() As String = {"胆汁质","多血质","粘液质","抑郁质"}
Dim dtb As New DataTableBuilder("气质类型Temp")
dtb.AddDef("id", Gettype(Integer))
dtb.AddDef("气质", Gettype(Integer))
dtb.Build()
Dim tb As Table = Tables("气质类型Temp")
tb.Visible = False
Dim n As Integer = Args.Length -1
For i As Integer = 0 To n 'Args.Length -1 ' 3
    Dim dr As DataRow = tb.DataTable.AddNew() ' DataTables("气质类型Temp").AddNew()
    dr("id") = i
    dr("气质") = Args(i)
Next
tb.Sort = "气质" ' DESC"
If tb.Rows(3)("气质") - tb.Rows(2)("气质") > 3 Then
    Return lxs(tb.Rows(3)("id"))
ElseIf tb.Rows(2)("气质") - tb.Rows(1)("气质") > 3 Then
    tb.Rows(1).Delete()
    tb.Rows(0).Delete()
    tb.Sort = "" '按数组lxs的顺序返回
    Return lxs(tb.Rows(0)("id")) & "," & lxs(tb.Rows(1)("id"))
ElseIf tb.Rows(1)("气质") - tb.Rows(0)("气质") > 3 Then
    tb.Rows(0).Delete()
    tb.Sort = "" '按数组lxs的顺序返回
    Return lxs(tb.Rows(0)("id")) & "," & lxs(tb.Rows(1)("id")) & "," & lxs(tb.Rows(2)("id"))
Else
    Return "无法判断"
End If

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


加好友 发短信
等级:童狐 帖子:204 积分:2037 威望:0 精华:0 注册:2015/3/6 17:12:00
  发帖心情 Post By:2015/11/25 11:25:00 [显示全部帖子]

感谢大红袍、狐表开发等各位狐友的帮助,现在系统内唯一的缺陷也补全了,工作效率直线上升!!!!再次感受到了狐表功能的强大,在工作效率的优化升级上,狐表绝对的功臣!强烈推荐狐表,再次感谢各位狐友的帮助!

 回到顶部