Foxtable(狐表)用户栏目专家坐堂 → [求助]请教:要实现以下结果,代码该怎么样优化?【已结】


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

主题:[求助]请教:要实现以下结果,代码该怎么样优化?【已结】

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


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
[求助]请教:要实现以下结果,代码该怎么样优化?【已结】  发帖心情 Post By:2016/5/10 10:38:00 [只看该作者]

表B,有姓名、分数、等级三列;表A上的窗口1的Table1控件绑定表B(Normal型副本);要实现结果:点击“统计”按钮后,代码根据窗口1分数区间设置下的4个区间文本框设置的值(前提:4个区间不一定全部设置了值,但至少有一个区间会设置值。只能从上到下依次设置;且后一个区间的值是大于前一个区间的值的),对比表B中分数列的分数,动态回写表B中等级列的值。
回写等级列值的逻辑是:
如果该行的分数≥有设置值的最后一个区间的值,那么等级列就写入“ 最后一个区间的值 & 分数以上”;
如果该行的分数≥有设置值的倒数第2个区间的值,那么等级列就写入“ 倒数第2个区间的值 & “-” & 最后一个区间的值 & 分”;
......以此类推
如果该行的分数不在上述情况内,则等级列写入“小于 & 第一个区间的值 & 分”
我的附件项目示例中的代码在4个区间都设置了值的时候没有问题,但是当只设置了1个或者2个或者3个区间的时候,就达不到想要的结果了。请教,代码该怎么样优化?

[此贴子已经被作者于2016/5/10 11:38:37编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/10 10:40:00 [只看该作者]

 请上传实例

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


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2016/5/10 10:42:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.rar


[此贴子已经被作者于2016/5/10 10:45:57编辑过]

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


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2016/5/10 10:48:00 [只看该作者]

已上传。咱们论坛附件好像很难上传上去,搞了几下才搞好。本来还有个截图的,怎么都上传不了?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/10 11:17:00 [只看该作者]

Dim qujian1 As WinForm.TextBox = e.Form.Controls("TextBox1")
If qujian1.Value Is Nothing Then
    MessageBox.Show("请至少设置一个区间!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error)
Else
    Dim idx As Integer
    For i As Integer = 4 To 1 Step -1
        Dim txt As WinForm.TextBox = e.Form.controls("Textbox" & i)
        If txt.text > "" Then
            idx = i
            Exit For
        End If
    Next

    For Each dr As DataRow In DataTables("表B").Select("")
        For i As Integer = idx To 1 Step -1
            Dim txt As WinForm.TextBox = e.Form.controls("Textbox" & i)
            If txt.text > "" Then
                If i = idx Then
                    If dr("分数") >= val(txt.Text) Then
                        dr("等级") = txt.text & "分以上"
                        Exit For
                    End If
                Else
                    If dr("分数") >= val(txt.Text) Then
                        dr("等级") = txt.text & " - " & e.form.controls("Textbox" & i+1).Text & "分"
                        Exit For
                    ElseIf i = 1 Then
                        If dr("分数") <= val(txt.Text) Then
                            dr("等级") = txt.text & "分以下"
                            Exit For
                        End If
                    End If
                End If
            End If
        Next
    Next
End If


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


加好友 发短信
等级:童狐 帖子:233 积分:2602 威望:0 精华:0 注册:2013/9/2 23:31:00
  发帖心情 Post By:2016/5/10 11:38:00 [只看该作者]

完美,感谢感谢!

 回到顶部