Foxtable(狐表)用户栏目专家坐堂 → 问个条件问题


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

主题:问个条件问题

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/2/15 16:39:00 [显示全部帖子]

Or

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/2/15 18:06:00 [显示全部帖子]

不用改表了:

If e.DataCol.Name = "积分" Then
    Dim dr1 As DataRow = DataTables("会员等级设置").Find("最低积分 > " & e.DataRow("积分"))
    Dim dr2 As DataRow = DataTables("会员等级设置").Find("等级名称 = '中级会员'")
    If dr1 Is Nothing Then
        e.DataRow("等级") = "高级会员"
    Else
        If dr2("最低积分") > e.DataRow("积分") Then
            e.DataRow("等级") = "初级会员"
        Else
            e.DataRow("等级") = "中级会员"
        End If
    End If
End If

[此贴子已经被作者于2014-2-15 18:15:39编辑过]

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/2/15 18:54:00 [显示全部帖子]

下面的更通用:

If e.DataCol.Name = "积分" Then
    For i As Integer = 0 To DataTables("会员等级设置").DataRows.Count - 1
        If DataTables("会员等级设置").DataRows(i).IsNull("等级名称") = False AndAlso DataTables("会员等级设置").DataRows(i).IsNull("最低积分") = False Then
            If i < DataTables("会员等级设置").DataRows.Count - 1 Then
                If e.DataRow("积分") >= DataTables("会员等级设置").DataRows(i)("最低积分") AndAlso e.DataRow("积分") < DataTables("会员等级设置").DataRows(i + 1)("最低积分") Then
                    e.DataRow("等级") = DataTables("会员等级设置").DataRows(i)("等级名称")
                End If
            Else
                If e.DataRow("积分") >= DataTables("会员等级设置").DataRows(i)("最低积分") Then
                    e.DataRow("等级") = DataTables("会员等级设置").DataRows(DataTables("会员等级设置").DataRows.Count - 1)("等级名称")
                End If
            End If
        End If
    Next
End If


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/2/15 19:51:00 [显示全部帖子]

以下是引用有点甜在2014-2-15 19:04:00的发言:
 呃,楼主这个问题,表结构也不需要改的吧?find函数不是可以排序的么?根据积分取最后一个就是用户等级了。

理解的更透彻,运用的更巧妙。

从善如流,见贤思齐。

If e.DataCol.Name = "积分" Then
    If e.DataRow("积分") < 0 Then
        e.DataRow("积分") = Nothing
        e.DataRow("等级") = Nothing
        MessageBox.Show("积分不能为负")
    Else
        Dim dr As DataRow = DataTables("会员等级设置").Find("最低积分 < = " & e.DataRow("积分"),"最低积分 Desc")
        If dr IsNot Nothing Then
            e.DataRow("等级") = dr("等级名称")
        End If
    End If
End If

[此贴子已经被作者于2014-2-15 19:53:47编辑过]

 回到顶部