Foxtable(狐表)用户栏目专家坐堂 → 怎么实现组长、副组长、成员三个字段的值实现类似1,2,3,4,5,6……的组合后,去比对人员信息表中姓名里是否有相同的内容,如果有输出1


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

主题:怎么实现组长、副组长、成员三个字段的值实现类似1,2,3,4,5,6……的组合后,去比对人员信息表中姓名里是否有相同的内容,如果有输出1

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
怎么实现组长、副组长、成员三个字段的值实现类似1,2,3,4,5,6……的组合后,去比对人员信息表中姓名里是否有相同的内容,如果有输出1  发帖心情 Post By:2022/9/15 11:01:00 [只看该作者]

在分组表中有组长、副组长、成员三个字段列   

三个字段列都有可能是多值

 
图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

在人员信息表中  有姓名字段列  单值

 

怎么实现组长、副组长、成员三个字段的值实现类似1,2,3,4,5,6……的组合后,去比对人员信息表中姓名里是否有相同的内容,如果有输出1


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


加好友 发短信
等级:超级版主 帖子:110809 积分:563983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/15 11:18:00 [只看该作者]

没看懂

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)没看懂  发帖心情 Post By:2022/9/15 11:33:00 [只看该作者]

老师  初步实现从组长  副组长   联络员  成员  组合之后  去找人才库中是否有,如果有就更改是否组队信息为已组队,如果没有,就更新为未组队【是否组队默认为未组队】


红色部分代码是不是多余了?

或者老师有没有更高效的写法

 

当前代码:

Dim cmd As New SQLCommand
cmd.Connec tionNa me = "主数据源"
cmd.CommandText =  "sel ect * from {巡察组信息}"
Dim dt1 As DataTable = cmd.ExecuteReader(True)
Dim Arys As List(Of String())
Arys = dt1.GetValues("组长|副组长|联络员|成员") '列名用符号|分割
cmd.CommandText =  "sel ect * from {巡察专业人才库}"
Dim dt11 As DataTable = cmd.ExecuteReader(True)
Dim Arys1 As List(Of String)
Arys1 = dt11.GetValues("姓名") '列名用符号|分割

For Each Ary As String() In Arys
    'Output.Show(Ary(0) & "," & Ary(1)& "," & Ary(2)& "," & Ary(3))
    Dim str As String = Ary(0) & "," & Ary(1)& "," & Ary(2)& "," & Ary(3)
    For Each s As String In str.split(",")
        'output.show(s)
        cmd.CommandText =  "se lect * from {巡察专业人才库} where 姓名='" & s & "'"
        Dim dt As DataTable = cmd.ExecuteReader(True)
        For Each dr As DataRow In dt.DataRows    '遍历巡察人才库,如果姓名等于s中的值   且未组队 就更新为已组队'
            If dr IsNot Nothing Then
                If dr("是否组队")="未组队" Then
                    dr("是否组队")="已组队"
                Else
                    For Each Ary1 As String In Arys1  '遍历巡察人才库中的值'
                        If Ary1<>s Then     '如果姓名值不等于s  且已组队状态   直接更新为未组队'
                            output.show("不同" & Ary1)
                            If dr("是否组队")="已组队" Then
                                dr("是否组队")="未组队"
                            End If
                        End If
                    Next
                End If
            End If
            dt.Save
        Next
    Next
Next

 

[此贴子已经被作者于2022/9/15 11:39:30编辑过]

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


加好友 发短信
等级:超级版主 帖子:110809 积分:563983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/15 11:57:00 [只看该作者]

Dim cmd As New SQLCommand
cmd.Connec tionNa me = "主数据源"
cmd.CommandText =  "select 组长,副组长,联络员,成员 from {巡察组信息}"
Dim dt1 As DataTable = cmd.ExecuteReader(True)
dim s as string = dt1.GetComboListString("组长") & "|" & dt1.GetComboListString("副组长") & "|"dt1.GetComboListString("联络员") & "|"dt1.GetComboListString("成员")
s = s.replace("|","','")
cmd.CommandText =  "update {巡察专业人才库} set 是否组队='未组队' ;update {巡察专业人才库} set 是否组队='已组队where 姓名 in ('" & s & "');"
cmd.ExecuteNonQuery

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim cmd As New SQLCommandcmd.Conne...  发帖心情 Post By:2022/9/15 12:15:00 [只看该作者]

谢谢老师  经老师指导,当前代码如下,完整达到预期效果   谢谢!

 


Dim cmd As New SQLCommand
cmd.Conn ect ionName = "主数据源"
cmd.CommandText =  "se lect 组长,副组长,联络员,成员 from {巡察组信息}"
Dim dt1 As DataTable = cmd.ExecuteReader()
Dim s As String = dt1.GetComboListString("组长") & "," & dt1.GetComboListString("副组长") & "," & dt1.GetComboListString("联络员") & "," & dt1.GetComboListString("成员")
output.show(s)
s = s.replace(",","','")
output.show(s)
cmd.CommandText =  "upd ate {巡察专业人才库} set 是否组队='未组队';upd ate {巡察专业人才库} set 是否组队='已组队' where 姓名 in ('" & s & "');"
cmd.ExecuteNonQuery

 

输出:

 

罗,李,13123,424323,43242
罗','李','13123','424323','43242

 

 "upd ate {巡察专业人才库} set 是否组队='未组队';upd ate {巡察专业人才库} set 是否组队='已组队' where 姓名 in ('" & s & "');"  这个我该怎么理解呢?

先将符合姓名的S去更新是否组队等于已组队   然后找不到的就直接更新为未组队   老师  是这个意思么?


[此贴子已经被作者于2022/9/15 12:45:21编辑过]

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


加好友 发短信
等级:超级版主 帖子:110809 积分:563983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/15 13:32:00 [只看该作者]

这里一次执行了2条update的sql,先把所有行更新为'未组队',再把符合条件的更新为'已组队'

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)这里一次执行了2条update的sql,先把...  发帖心情 Post By:2022/9/15 15:02:00 [只看该作者]

这样啊  谢谢!

 

老师我想实现的是假设姓名有123……20假设第一次得到了姓名1234567   那么8910……20就为未组队  1234567就更新为已组队 

因为已组队的1234567不能再次被选择  如果选择了8910……20  那么就更新8910……20为已组队 

如果中途巡察组信息中的组合姓名多值 取消了2389四个   那么就对应更新2389为未组队  

 

老师还有没有其他办法可以实现呢?

[此贴子已经被作者于2022/9/15 15:21:57编辑过]

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


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

5楼的用法有什么问题?

 回到顶部