Foxtable(狐表)用户栏目专家坐堂 → 如果在列表中看不到表里已有的项目


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

主题:如果在列表中看不到表里已有的项目

帅哥,在线噢!
zhangchi96
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:5063 威望:0 精华:0 注册:2012/2/11 13:27:00
如果在列表中看不到表里已有的项目  发帖心情 Post By:2022/10/23 15:29:00 [只看该作者]

我在一个表【表a】的click事件中:
      1、 通过另外一个表dt,得到一个列表
              Dim 原有列表 As List(Of String) = Dt.GetUniqueValues("","姓名")    ,假设这里的姓名有:张三|张三丰|李四|李四德|赵武|赵武王|王六|王六小
      2、【表a】已有记录如下
                    序号    姓名   性别  备注
                     1       张三
                     2       李四 
                     3       赵武
                     4       ??                  
             这里本来可以表示为  e.Col.Combolist = 原有列表
      3、希望在第4条记录录入时,点击姓名,得到一个下拉菜单,这个菜单,不包含已有的姓名:1、张三 2、李四 3、赵武,只有 :张三丰|李四德|赵武王|王六|王六小
             
                  如何求得  e.Col.Combolist = ? 
 请老师指导

[此贴子已经被作者于2022/10/23 15:38:54编辑过]

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


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

Dim 原有列表 As List(Of String) = Dt.GetValues("姓名","姓名 not in('" & datatables("表a").GetComboListString("姓名").replace("|","','") & "')")   

 回到顶部
帅哥,在线噢!
zhangchi96
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:5063 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2022/10/24 9:31:00 [只看该作者]

我最终的写法,贴一下
If e.Ta_ble.Name = "选项列表" Then
    If For_ms("学期设置窗体").Op_ened()
        If e.Col.Name = "项目3类_年度" Then '如果正在编辑的是县市列
            e.Col.Co_mbo_list = Dat_aTa_bles("选项列表").Ge_tCo_mboLi_stS_tring("项目3类_年度", " 项目2类 = '年度'" , "分类编号" )
        ElseIf e.Col.Name = "项目4类_学期" Then
            e.Col.Co_mbol_ist = "春学期|秋学期"
        End If
    ElseIf Fo_rms("学校名称设置窗体").Opened() '判断窗口是否打开
        If e.Col.Name = "项目5类_校名" Then
            Dim cm_d As New S_QLCo_mm_and
            c_md.C 
            c_md.Co_mman_dText = "Sel_ect * Fr_om {选项列表} Where 项目2类 = '学校名称' and ( 项目3类_年度 <> "& Vars("年度") &" Or 项目4类_学期 <> '"& Vars("学期") &"' ) "
            Dim dt As Dat_aTa_ble = c_md.Ex_ecu_teR_eader() '先生成一个表
            Dim 原有列表 As List(Of String) = Dt.Ge_tUniqu_eVal_ues(" 项目5类_校名 not in('" & Dat_aTab_les("选项列表").Ge_tCo_mbo_ListS_tring("项目5类_校名").repl_ace("|","','") & "') ","项目5类_校名")
            Dim 新列表 As String = " "
            For k As Integer = 0 To 原有列表.Count - 1 
                If 新列表.Co_ntai_ns("|" & 原有列表(k)) = True Then '如果包含
                Else
                    新列表 = 新列表 & "|" & 原有列表(k)
                End If
            Next
          e.Col.Co_mbo_list = 新列表
        End If
    End If
End If

 回到顶部
帅哥,在线噢!
zhangchi96
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:5063 威望:0 精华:0 注册:2012/2/11 13:27:00
  发帖心情 Post By:2022/10/28 16:44:00 [只看该作者]

蓝老师:
     上次你帮我写的这个很有用,
Dim 原有列表 As List(Of String) = Dt.GetValues("姓名","姓名 not in('" & datatables("表a").GetComboListString("姓名").replace("|","','") & "')")   

这里的【姓名】列是字符型的,如果遇到不是【姓名】,而是 【序号】,是数值型(整数),这个表达式就出错了,尝试了好几个方法都没解决,请帮忙解决!是不是哪里加个什么类型的括号呢

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


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

Dim 原有列表 As List(Of String) = Dt.GetValues("序号","序号 not in(" & datatables("表a").GetComboListString("姓名").replace("|",",") & ")")   

去掉单引号即可
字符: 第一列 not in ('1','2','3')
数值: 第一列 not in (1,2,3)

 回到顶部