Foxtable(狐表)用户栏目专家坐堂 → 如何对导入项目内部表的数据,指定某几列的值进行判断,如果不相等,就筛选出来,然后导出使用,如果相等就直接删除。


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

主题:如何对导入项目内部表的数据,指定某几列的值进行判断,如果不相等,就筛选出来,然后导出使用,如果相等就直接删除。

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)下载这里的最新版:http://www.foxta...  发帖心情 Post By:2021/10/22 12:14:00 [只看该作者]

谢谢老师   已经下载新版   运行之后还是没有得到预期效果  麻烦老师继续指导下  谢谢! 
原始数据

图片点击可在新窗口打开查看此主题相关图片如下:捕获1.png
图片点击可在新窗口打开查看
选择第二列 第三列之后运行得到的数据

图片点击可在新窗口打开查看此主题相关图片如下:捕获2.png
图片点击可在新窗口打开查看
筛选后的数据还存在第二列 第三列值一样的数据   想实现的效果是筛选后  假定被选择的第二列 第三列值相同的话  该行数据不显示   反之就显示出来

选择第二列第三列第四列得到错误提示
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.9.2.1
错误所在事件:
详细错误信息:
语法错误: IN 关键字后面必须是由逗号分隔的非空表达式列表,并且必须用括号括起来。
筛选后的数据为空白
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.table



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


加好友 发短信
等级:超级版主 帖子:107523 积分:546900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/22 13:35:00 [只看该作者]

嗯!我们理解的不是一个东西。我以为是指不同行多列相同。如果是同一行多列相同完全是另一回事了。改为下面这种

dim s as string = "第二列,第三列"
dim filter as string = "1=2"
dim ss() as string = s.split(",")
dim s1 as string = ss(0)
for i as integer = 1 to ss.length - 1
filter = filter & " or " s1 & " <> " & ss(i)
next
msgbox(filter)
tables("xxx").filter = filter

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)嗯!我们理解的不是一个东西。我以为...  发帖心情 Post By:2021/10/25 16:07:00 [只看该作者]

有点蓝老师
现在同一个数据行之间的问题OK了
不同数据行之间 现在运行貌似  如果没有相同的数据  就会提示如图错误  【麻烦老师继续指导下  谢谢!】

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.table

  当前不同行数据的确定筛选代码如下:
Dim s As String
Dim l As WinForm.CheckedListBox = e.Form.Controls("CheckedListBox1")
For Each Index As Integer In l.CheckedIndices
    s = s & "," & l.Items(Index)
Next
s = s.trim(",")
Dim cs As String =  s

Dim idx As String = ""

Dim lst As new List(of String)
Dim flag As Boolean

Dim drs As List(Of  DataRow) = DataTables("表A").Select("第一列 is not null", cs)
Dim pdr As DataRow = drs(0)
Dim dr As DataRow
For i As Integer = 1 To drs.count - 1
    dr = drs(i)
    flag = False
    For Each c As String In cs.split(",")
        If pdr(c) <> dr(c) Then
            flag = True
            Exit For
        End If
    Next
    If flag = False Then
        If lst.Contains(pdr("_Identify")) = False
            lst.add( pdr("_Identify") )
        End If
        lst.add( dr("_Identify") )
    End If
    pdr = dr
Next

If lst.count > 0 Then
    idx = String.Join(",",lst.ToArray)
End If

Tables("表A").filter = "第一列 is not null and _Identify not in (" & idx.trim(",") & ") "

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


加好友 发短信
等级:超级版主 帖子:107523 积分:546900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/25 20:34:00 [只看该作者]

If lst.count > 0 Then
    idx = String.Join(",",lst.ToArray)
Tables("表A").filter = "第一列 is not null and _Identify not in (" & idx.trim(",") & ") "
else
msgbox(没有重复)
End If




 回到顶部
总数 14 上一页 1 2