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


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

主题:IF问题

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


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
IF问题  发帖心情 Post By:2019/4/25 2:52:00 [只看该作者]

老师,请问下,如果A列一样,B列不为空,那么C列自动输入“正确”,如果B列有重复,那么默认有重复的行只要输入一次就可以,不会重复输入,其他行为空,这样的代码要怎么写,麻烦老师帮我写下,谢谢!

 

下面是例子,例如A列001一样,但是B列的电视重复了,所以在C列的电视行只要输入一次1次就可以了,不需要重复输入。

 

 

  A列   B列     C列 
   001   冰箱    正确
   001   电视    正确
   001   电视    
   001   洗衣机    正确
   002   冰箱    正确
   002   冰箱    
   002   洗衣机    正确
   002   电视    正确

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


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

参考代码

 

Select Case e.DataCol.name
    Case "型号","规格"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("型号") = False AndAlso dr.IsNull("规格") = False Then
            If e.DataTable.Compute("Count([_Identify])","型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "'") > 1 Then
                MessageBox.Show("已经存在相同型号和规格的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.DataRow("c") = Nothing
            Else
                e.DataRow("c") = "正确"
            End If
        End If
End Select


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


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By:2019/4/25 15:39:00 [只看该作者]

老师,代码我修改了下,但是只有有重复的行,C列才会输入1,如果只有单行的,C列都不会自动输入,麻烦老师帮我修改下,谢谢!
Select Case e.DataCol.name
 Case "A列", "B列"
 Dim drs As List(Of DataRow) = e.DataTable.Select("A列 = '" & e.DataRow("A列") & "'", "B列 desc")
 If drs.count > 0 Then
 drs(0)("C列") = 1
 For i As Integer = 1 To drs.count-1
 drs(i)("C列") = Nothing
 Next
 End If
End Select

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


加好友 发短信
等级:超级版主 帖子:107772 积分:548205 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/25 15:55:00 [只看该作者]

Select Case e.DataCol.name
    Case "A列","B列"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("A列") = False AndAlso dr.IsNull("B列") = False Then
            If e.DataTable.Compute("Count([_Identify])","A列 = '" & dr("A列") & "' And B列 = '" & dr("B列") & "'") > 1 Then
                e.DataRow("c") = Nothing
            Else
                e.DataRow("c") = "正确"
            End If
        End If
End Select

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


加好友 发短信
等级:三尾狐 帖子:715 积分:6677 威望:0 精华:0 注册:2016/6/27 17:56:00
  发帖心情 Post By:2019/4/25 17:19:00 [只看该作者]

老师,发现一个问题,如果C列不小心删除了,再重置A列或者B列时,B列有重复的行,C列不会再自动输入,只有没重复的行才会自动输入。

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


加好友 发短信
等级:超级版主 帖子:107772 积分:548205 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/25 17:36:00 [只看该作者]

Select Case e.DataCol.name
    Case "第一列","第二列"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("第一列") = False AndAlso dr.IsNull("第二列") = False Then
            If e.DataTable.Compute("Count([_Identify])","第一列 = '" & dr("第一列") & "' And 第二列 = '" & dr("第二列") & "' and [_Identify] < " & e.DataRow("_Identify")) > 0 Then
                e.DataRow("第三列") = Nothing
            Else
                e.DataRow("第三列") = "正确"
            End If
        End If
End Select

 回到顶部