以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  IF问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133997)

--  作者:jick0526
--  发布时间:2019/4/25 2:52:00
--  IF问题

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

 

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

 

 

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

--  作者:有点甜
--  发布时间: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
--  发布时间: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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/4/25 17:19:00
--  
老师,发现一个问题,如果C列不小心删除了,再重置A列或者B列时,B列有重复的行,C列不会再自动输入,只有没重复的行才会自动输入。
--  作者:有点蓝
--  发布时间: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