Foxtable(狐表)用户栏目专家坐堂 → 求解:当【信息列表】中的发送对象选择了 党员 时,那么姓名为张三的身份属性就从其【干警信息】表中身份属性所有值获取出来只显示党员,而不是显示张三所有的身份属性值党员,行政人员,中层干部,科长。


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

主题:求解:当【信息列表】中的发送对象选择了 党员 时,那么姓名为张三的身份属性就从其【干警信息】表中身份属性所有值获取出来只显示党员,而不是显示张三所有的身份属性值党员,行政人员,中层干部,科长。

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求解:当【信息列表】中的发送对象选择了 党员 时,那么姓名为张三的身份属性就从其【干警信息】表中身份属性所有值获取出来只显示党员,而不是显示张三所有的身份属性值党员,行政人员,中层干部,科长。  发帖心情 Post By:2020/3/28 14:19:00 [显示全部帖子]

【信息列表】中发送对象是多值可选属性,发送对象当前可选党员,行政人员,中层干部,科长
假设当前【干警信息】表里面 姓名张三   身份属性为:党员,行政人员,中层干部,科长

当【信息列表】中的发送对象选择了  党员 时,那么姓名为张三的身份属性就从其【干警信息】表中身份属性所有值获取出来只显示党员,而不是显示张三所有的身份属性值党员,行政人员,中层干部,科长


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


代码如下:【怎么修正红色部分呢】
Dim br As Row=Tables("信息列表").Current
Dim Vals As List(of String)
If br("发送对象") <>"" Then
    Dim filter As String = "1=2"
    For Each s As String In br("发送对象").split(",")
        filter = filter & " or [身份属性] like '%" & s & "%' and 所在单位 = '" & _usergroup & "'"
    Next
    Vals = DataTables("干警信息").sqlGetValues("姓名",filter  )
End If
For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("告知内容").sqlfind("信息内容 = '" & br("信息内容") & "'and 操作单位 = '" & _usergroup & "' and 姓名 = '" & vals(i) & "'")
    Dim dr1 As DataRow = DataTables("干警信息").sqlfind("所在单位 = '" & _usergroup & "' and 姓名 = '" & vals(i) & "'")
    If dr Is Nothing Then
        dr = DataTables("告知内容").AddNew()
        dr("信息时间") = Date.Now
        dr("姓名") = Vals(i)
        If dr1 IsNot Nothing Then
            dr("身份属性")= dr1("身份属性")
            dr("手机号码")=dr1("电话")
        End If
        dr.save
    End If
Next

[此贴子已经被作者于2020/3/28 14:20:47编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)没看懂。举多几个例子说明一下  发帖心情 Post By:2020/3/28 21:47:00 [显示全部帖子]

如图    
假设张三身份属性有三个值   党员  全院干警  行政人员
如果发送对象选择了  全院干警 党员两个值后  那么张三身份属性就应该只显示全院干警  党员  两个值  不应该显示行政人员这值了
如发送对象选择了党员时  张三身份属性就应该只显示党员这个值

如上图中  发送对象是单个值时  身份属性也是单个值
[此贴子已经被作者于2020/3/29 9:48:51编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)没看懂。举多几个例子说明一下  发帖心情 Post By:2020/3/29 18:23:00 [显示全部帖子]

麻烦老师指导一下  谢谢

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)哪为什么不直接取发送对象?dr("身份...  发帖心情 Post By:2020/4/2 15:25:00 [显示全部帖子]

因为发送对象是一个大类别  一个对象可能会有多个身份属性
比如发送对象代表联络   就对应人大代表 和政协委员两个身份属性   但是一个用户只能有其中一个身份属性  不可能同时具有人大代表和政协委员
比如张三是人大代表  李四是政协委员
当选择发送对象为代表联络后   对应张三身份属性就是人大代表  李四身份属性就是政协委员

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)那么从哪里可以获取张三身份属性就是...  发帖心情 Post By:2020/4/2 21:01:00 [显示全部帖子]

在表里张三会有多个身份属性哦  比如党员、代表、行政人员
当发送对象对党员时,只想显示身份属性为党员,    另外两个代表、行政人员身份属性就不再显示啦

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)越说越迷糊了,实在没搞懂这些数据关...  发帖心情 Post By:2020/4/3 10:51:00 [显示全部帖子]

当前数据库中
张三属性 党员  行政人员  全院干警
李四属性 党员  事业人员

因为发送对象为多个时   会出现党员  行政人员同时选择

在选择党员 行政人员多个对象时  想实现:(也就是身份属性显示出来的值,必须是发送对象值中含有的,不含有就不显示对应身份属性值)
张三属性就只显示  党员 行政人员    不显示全院干警
李四属性就只显示  党员                不显示 事业人员
当前效果是
张三属性 党员  行政人员  全院干警(全部都显示)
李四属性 党员  事业人员(全部显示)

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)因为发送对象为多个时   会...  发帖心情 Post By:2020/4/3 11:07:00 [显示全部帖子]

选择多个对象
但是不等于这些对象对应的人员都具有这个身份属性哦
比如选择党员
李四  党员  行政人员
张三  党员  事业编制
那么就应该获取他们都是党员的属性   至于行政人员  事业编制就不应该再显示出来了

如果选择行政人员 
那么李四身份属性就只显示行政人员  其党员属性就不应该显示出来了
因为张三不具有行政人员身份属性  所以张三就不显示出来

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)问题是怎么选择党员、行政人员的?在...  发帖心情 Post By:2020/4/3 11:33:00 [显示全部帖子]

在窗体组件中选择发送对象

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
点击保存后 
生成告知内容表
相关内容  然后从干警信息里面去查找所选择的发送对象值  对应有姓名 身份属性  并添加到告知内容表中
完整代码如下:
Dim br As Row=Tables("信息编辑_table1").Current
Dim l1 As WinForm.Label = Forms("信息编辑").Controls("Label12")
l1.text="程序开始执行,请稍候……"

If br("空值")=False Then
    
    If br("信息类别") <>"" Then
        If br("信息内容") <>"" Then
            Dim Vals As List(of String())
            If br("发送人员") <>"" Then
                Dim filter As String = "1=2"
                For Each s As String In br("发送人员").split(",")
                    filter = filter & " or [姓名] like '%" & s & "%' "
                Next
                Vals = DataTables("干警信息").sqlGetValues("姓名|身份属性|电话",filter  )
                
            Else If br("发送对象") <>"" Then
                Dim filter As String = "1=2"
                For Each s As String In br("发送对象").split(",")
                    filter = filter & " or [身份属性] like '%" & s & "%' and 所在单位 = '" & _usergroup & "'"
                Next
              Vals = DataTables("干警信息").sqlGetValues("姓名|身份属性|电话",filter  )
                
            Else If br("关注领域") <>"" Then
                Dim filter As String = "1=2"
                For Each s As String In br("关注领域").split(",")
                    filter = filter & " or [关注领域] like '%" & s & "%' "
                Next
                Vals = DataTables("干警信息").sqlGetValues("姓名|身份属性|电话",filter  )
            End If

            Dim t As WinForm.TextBox =Forms("信息编辑").Controls("TextBox4")
            Dim d = t.BaseControl
            Dim dr0 As DataRow =  DataTables("信息模板").sqlfind("操作单位='" & _usergroup & "' And  信息类别 = '" & br("信息类别") & "'"  )

            For i As Integer = 0 To Vals.Count - 1
                Dim dr As DataRow = DataTables("告知内容").sqlfind("信息内容 = '" & br("信息内容") & "'and 操作单位 = '" & _usergroup & "' and 姓名 = '" & vals(i)(0) & "'")
                If dr Is Nothing Then
                    dr = DataTables("告知内容").AddNew()
                    dr("信息时间") = Date.Now
                    dr("姓名") = Vals(i)(0)
                    dr("身份属性")= Vals(i)(1)
                    dr("手机号码")=Vals(i)(2)
                    dr("信息内容")=br("信息内容")
                    dr("是否告知")= "否"
                    dr("发送对象")= br("发送对象")
                    dr("发送平台")= br("发送平台")
                    dr("信息类别")= br("信息类别")
                    dr("拟发送时间")= br("拟发送时间")
                    dr("序号")=br("_identify")
                    dr("操作单位")=_usergroup
                    dr("信息编号")=br("信息编号")
                    
                    If dr0 IsNot Nothing Then
                        '定义字符串
                        If br("信息内容")IsNot Nothing Then
                            Dim str1 As String = dr0("模板内容")
                            '定义遍历内容替换表查找内容
                            Dim drs1 As List(of DataRow)  =   DataTables("内容替换表").SQLSelect("")
                            For Each dr11 As DataRow In drs1
                                '如果替换内容与列名不等于空时
                                If dr11("替换内容") > "" And dr11("列名") > "" Then
                                    '如果告知内容表列值中包含内容替换表中的列值时,进行对应替换
                                    If DataTables("告知内容").DataCols.Contains(dr11("列名")) Then
                                        str1 = str1.replace(dr11("替换内容"),dr(dr11("列名")))
                                    End If
                                End If
                            Next
                            '输入替换后的值,并且写入告知内容表中的告知内容列,然后保存告知内容表
                            'MessageBox.show(str1)
                            dr("告知内容")=str1
                        End If
                    Else
                        dr("状态码")="无对应短信模板"
                    End If
                    dr.save
                End If
                t.Text= t.Text & vbcrlf & "{" & dr("身份属性") & "}" & "【" & dr("姓名") & "】同志的数据已生成!"
                t.SelectionStart = t.Text.Length
                d.ScrollToCaret
                Application.DoEvents
            Next
            
            
            br("空值")=True
            DataTables("信息列表").Save()
            
        Else
            MessageBox.Show("信息内容不能为空!")
        End If
    Else
        MessageBox.Show("信息类别必须选择一个")
    End If
    l1.text="程序执行完毕,可关闭当前窗口!"
End If
'Next

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)那就直接取这个发送对象控件选择的值...  发帖心情 Post By:2020/4/3 16:41:00 [显示全部帖子]

发送对象为多个值的话    比如 党员   行政人员

如果张三身份属性是党员  行政人员  全院干警
会把张三所有属性全部显示出来  
而实际上我只要发送对象的值显示   不要全院干警这个属性显示出来

 回到顶部