Foxtable(狐表)用户栏目专家坐堂 → 关于列多值字段筛选自动输入问题


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

主题:关于列多值字段筛选自动输入问题

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


加好友 发短信
等级:四尾狐 帖子:809 积分:5573 威望:0 精华:0 注册:2016/4/15 22:24:00
关于列多值字段筛选自动输入问题  发帖心情 Post By:2020/8/4 15:36:00 [只看该作者]

我有两个表,一个“员工”表,一个“活动表”。“活动表”有四列:活动一参与、活动二参与、活动三参与、剩余人员。能否实现以下人员输入设想:只需要在活动一参与列中输入人员姓名,剩余人员在剩余人员列显示;在活动二参与列中输入人员姓名,剩余人员在剩余人员列中自动减少;在活动三参与列中输入人员姓名,剩余人员在剩余人员列中自动减少。敬请指教,怎么写代码来实现

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


加好友 发短信
等级:四尾狐 帖子:809 积分:5573 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2020/8/4 15:46:00 [只看该作者]

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


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


加好友 发短信
等级:狐神 帖子:4723 积分:34352 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2020/8/4 16:09:00 [只看该作者]

Dim 集合1 As List(of String) = DataTables("员工").GetValues("姓名")
Select Case e.DataCol.Name
    Case "活动一参与"
        Dim 集合2 As new List(of String)
        If e.NewValue IsNot Nothing Then 集合2.AddRange(e.NewValue.split(","))
        集合2.AddRange(e.DataRow("活动二参与").split(","))
        集合2.AddRange(e.DataRow("活动三参与").split(","))
        e.DataRow("剩余人员") = String.join(",",(集合1.Except(集合2)).ToArray)
    Case "活动二参与"
        Dim 集合2 As new List(of String)
        If e.NewValue IsNot Nothing Then 集合2.AddRange(e.NewValue.split(","))
        集合2.AddRange(e.DataRow("活动一参与").split(","))
        集合2.AddRange(e.DataRow("活动三参与").split(","))
        e.DataRow("剩余人员") = String.join(",",(集合1.Except(集合2)).ToArray)
    Case "活动三参与"
        Dim 集合2 As new List(of String)
        If e.NewValue IsNot Nothing Then 集合2.AddRange(e.NewValue.split(","))
        集合2.AddRange(e.DataRow("活动一参与").split(","))
        集合2.AddRange(e.DataRow("活动二参与").split(","))
        e.DataRow("剩余人员") = String.join(",",(集合1.Except(集合2)).ToArray)
End Select
[此贴子已经被作者于2020/8/4 16:18:31编辑过]

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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/4 16:21:00 [只看该作者]

If e.DataCol.Name Like "*参与" Then
    Dim s As String = ""
    For Each dc As DataCol In e.DataTable.DataCols
        If dc.Name Like "*参与" Then
            s = s & "," & e.DataRow(dc.Name)
        End If
    Next
    If s > "" Then
        s = s.Trim(",").Replace(",","','")
        e.DataRow("剩余人员") = DataTables("员工").GetComboListString("姓名","姓名 not in('" & s & "')").replace("|",",")
    Else
        e.DataRow("剩余人员") = DataTables("员工").GetComboListString("姓名").replace("|",",")
    End If
End If

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


加好友 发短信
等级:四尾狐 帖子:809 积分:5573 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2020/8/4 17:45:00 [只看该作者]

老师,但这样活动1-3参与,人员有重复,能否不能重复,怎么修改


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


加好友 发短信
等级:四尾狐 帖子:809 积分:5573 威望:0 精华:0 注册:2016/4/15 22:24:00
非常感谢  发帖心情 Post By:2020/8/4 17:52:00 [只看该作者]

非常感谢

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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/4 20:08:00 [只看该作者]

重复按照之前的方法排除,用法都差不多。

 回到顶部