Foxtable(狐表)用户栏目专家坐堂 → [求助]前面4列一样,第五列自动一样


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

主题:[求助]前面4列一样,第五列自动一样

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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
[求助]前面4列一样,第五列自动一样  发帖心情 Post By:2018/8/1 15:13:00 [只看该作者]

 前面4列一样,第五列自动一样 下面代码怎么修改呢?
Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("第一列") = False AndAlso dr.IsNull("第二列") =False AndAlso dr.IsNull("第三列") =False AndAlso dr.IsNull("第四列") =False Then
            If e.DataTable.Select("第一列 = '" & dr("第一列") & "' And 第二列 = '" & dr("第二列") & "' And 第三列 = '" & dr("第三列") & "' And  第四列 = '" & dr("第四列") & "'") .Count > 1 Then
                  dr("第五列") = e.DataRow("第五列")                
MessageBox.Show("前面4列一样,第五列自动一样了!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)
            End If
        End If
End Select
[此贴子已经被作者于2018/8/1 15:13:06编辑过]

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


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


Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("第一列") = False AndAlso dr.IsNull("第二列") =False AndAlso dr.IsNull("第三列") =False AndAlso dr.IsNull("第四列") =False Then
            Dim fdr = e.DataTable.find("第一列 = '" & dr("第一列") & "' And 第二列 = '" & dr("第二列") & "' And 第三列 = '" & dr("第三列") & "' And  第四列 = '" & dr("第四列") & "' and _Identify <> " & dr("_Identify"))
            If fdr IsNot Nothing Then
                dr("第五列") = fdr("第五列")
                MessageBox.Show("前面4列一样,第五列自动一样了!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)
            End If
        End If
End Select

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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)Select Case e.DataCol.Name?&n...  发帖心情 Post By:2018/8/1 16:02:00 [只看该作者]

 如果修改1-4列不同了,第5列值自动为空,怎么修改呢?
Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        Dim dr As DataRow = e.DataRow
        'If dr.IsNull("第一列") = False AndAlso dr.IsNull("第二列") =False AndAlso dr.IsNull("第三列") =False AndAlso dr.IsNull("第四列") =False AndAlso dr.IsNull("第五列") =False  Then
        If dr.IsNull("第五列") =False  Then
            Dim fdr = e.DataTable.find("第一列 = '" & dr("第一列") & "' And 第二列 = '" & dr("第二列") & "' And 第三列 = '" & dr("第三列") & "' And  第四列 = '" & dr("第四列") & "' and _Identify <> " & dr("_Identify"))

                If dr("第一列") <> fdr("第一列") Or dr("第二列") <> fdr("第二列") Or dr("第三列") <> fdr("第三列") Or dr("第四列") <> fdr("第四列") Then
                dr("第五列") = " "

                MessageBox.Show("前面4列不一样,第五列<layer highlight="term-5" class="searchwp-term searchwp-highlight-searchwp-highlighting">删除</layer>字符后为空值!", "提示")
            End If      
        End If
End Select
[此贴子已经被作者于2018/8/1 16:02:12编辑过]

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


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

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("第一列") = False AndAlso dr.IsNull("第二列") =False AndAlso dr.IsNull("第三列") =False AndAlso dr.IsNull("第四列") =False Then
            Dim fdr = e.DataTable.find("第一列 = '" & dr("第一列") & "' And 第二列 = '" & dr("第二列") & "' And 第三列 = '" & dr("第三列") & "' And  第四列 = '" & dr("第四列") & "' and _Identify <> " & dr("_Identify"))
            If fdr IsNot Nothing Then
                dr("第五列") = fdr("第五列")
                MessageBox.Show("前面4列一样,第五列自动一样了!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)

            else

                dr("第五列") = Nothing
            End If
        End If
End Select


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)Select Case e.DataCol.Name &n...  发帖心情 Post By:2018/8/1 17:03:00 [只看该作者]

 1、上面代码有点问题:
      输入前面4列后,第5列不能输入字符串
      提示窗口提示确认2次

2、四列重复的行都显示出来,下面代码怎修改呢?
Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列,第二列,第三列,第四列"
For Each dr As DataRow In DataTables("表A").Select("", "第一列,第二列,第三列,第四列")
  
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
    End If
    If flag OrElse pdr Is Nothing Then
        If count > 1 Then
            idx &= idx_temp
        End If
        count = 1
        idx_temp = ""
    Else
        count += 1
        idx_temp &= dr("_Identify") & ","
    End If
  
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

Tables("表A").filter = "_Identify in (" & idx.trim(",") & ")"


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


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

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("第一列") = False AndAlso dr.IsNull("第二列") =False AndAlso dr.IsNull("第三列") =False AndAlso dr.IsNull("第四列") =False Then
            Dim fdr = e.DataTable.find("第一列 = '" & dr("第一列") & "' And 第二列 = '" & dr("第二列") & "' And 第三列 = '" & dr("第三列") & "' And  第四列 = '" & dr("第四列") & "' and _Identify <> " & dr("_Identify"))
            If fdr IsNot Nothing Then
                dr("第五列") = fdr("第五列")
                MessageBox.Show("前面4列一样,第五列自动一样了!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)

            else

                dr("第五列") = Nothing
            End If
        End If
End Select


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


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

2、筛选代码没问题,就是这样改。


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)2、筛选代码没问题,就是这样改。  发帖心情 Post By:2018/8/1 17:18:00 [只看该作者]

 上面的代码筛选结果是:1-4列重复的多行,只显示1行
想实现筛选结果是:要显示1-4列重复的所有行
代码怎么修改呢?
[此贴子已经被作者于2018/8/1 17:26:39编辑过]

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


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

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列,第二列,第三列,第四列"
Dim t As Table = Tables("表A")
For Each dr As DataRow In t.DataTable.Select("", cs)
   
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
    End If
    If flag Then
        If count > 1 Then
            idx &= idx_temp
        End If
        count = 1
        idx_temp = ""
        idx_temp &= dr("_Identify") & ","
    Else
        count += 1
        idx_temp &= dr("_Identify") & ","
    End If
   
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

t.filter = "_Identify in (" & idx.trim(",") & ")"


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)Dim idx As String = "-1,"Dim idx_t...  发帖心情 Post By:2018/8/1 18:24:00 [只看该作者]

标设置标注列后,还报错,什么原因呢?
 列“_Identify”不属于表 物料表。

 回到顶部
总数 11 1 2 下一页