Foxtable(狐表)用户栏目专家坐堂 → 多列判断


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

主题:多列判断

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
多列判断  发帖心情 Post By:2018/9/2 19:00:00 [只看该作者]

我的需求是:

1、产品类型和产品名称有一个为空时,级别为空
2、产品类型、产品名称和规格都不为空时,级别为“明细”
3、产品类型、产品名称不为空,并且在同表中有相同行时,级别为“大类”
4、产品类型、产品名称不为空,并且在同表中没有相同行时,级别为“小类”

下面代码如何调整?

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "产品类型","产品名称","规格"
        ' If e.NewValue IsNot Nothing Then
        If dr.IsNull("产品类型") OrElse dr.IsNull("产品名称") Then
            dr("级别") = Nothing
        Else
            If dr.IsNull("规格") = False Then
                dr("级别") = "明细"
            Else
                Dim fdr As DataRow = e.DataTable.Find("产品名称 = '" & dr("产品名称") & "' And 产品类型 = '" & dr("产品类型") & "' And 规格 Is Null")
                If fdr IsNot Nothing Then
                    fdr("级别") = "大类"
                    dr("级别") = "单个"
                Else
                    dr("级别") = "单个"
                End If
            End If
            'Dim fil As String 
            'Dim fdr1 As DataRow = e.DataTable.Find("产品名称 = '" & e.OldValue & "' or 产品类型 = '" & e.OldValue & "'") '  And 规格 Is Null")
            Dim fdr1 As DataRow = e.DataTable.Find("产品类型 = '" & e.OldValue & "' or 产品名称 = '" & e.OldValue & "' And 规格 Is Null")
            If fdr1 IsNot Nothing  AndAlso e.DataTable.Compute("Count([_Identify])","产品类型 = '" & e.OldValue & "' or 产品名称 = '" & e.OldValue & "'") = 1 Then
                fdr1("级别") = "单个"
            End If
        End If
        ' End If
End Select
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:产品.table



[此贴子已经被作者于2018/9/2 20:49:36编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/2 19:57:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:产品.table


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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/9/2 20:42:00 [只看该作者]

还是有点问题:
1、我一重置后红色部分变成“小类”了,应为“大类”
2、当修改表的“产品类型”和“产品名称”时,如果当前表相同值只有一行时,大类返回为小类


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

[此贴子已经被作者于2018/9/2 20:49:06编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/2 21:02:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "产品类型","产品名称","规格"
        ' If e.NewValue IsNot Nothing Then
        If dr.IsNull("产品类型") OrElse dr.IsNull("产品名称") Then
            dr("级别") = Nothing
        Else
            If dr.IsNull("规格") = False Then
                dr("级别") = "明细"
            Else
                Dim count = e.DataTable.compute("count(产品名称)", "产品名称 = '" & dr("产品名称") & "' And 产品类型 = '" & dr("产品类型") & "' And 规格 Is Null")
                If count >= 1 Then
                    dr("级别") = "大类"
                Else
                    dr("级别") = "小类"
                End If
            End If
        End If
End Select

 回到顶部