Foxtable(狐表)用户栏目专家坐堂 → [求助]如何提取未使用的值(已解决)?


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

主题:[求助]如何提取未使用的值(已解决)?

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
[求助]如何提取未使用的值(已解决)?  发帖心情 Post By:2019/1/29 13:59:00 [只看该作者]

各位老师前辈,现在有一个这样问问题,向大家请教一下,我设置了一个字典表字段,比如字段名称叫“

绑定到分组”,然后这个字段一共设置了10个值,分别是:

语音分组01
语音分组02
语音分组03
语音分组04
语音分组05
语音分组06
语音分组07
语音分组08
语音分组09
语音分组10


然后通过下面的代码,调用带窗口的ComboBox中;

Dim cmd As New SQLCommand
Dim r As Row =Foxtools.Tools.Rows(eform)
cmd.C
cmd.CommandText = "S-E-L-E-C-T * From {ZD_一级字典} Where 字典名称= '绑定到分组'"
Dim dt As DataTable = cmd.ExecuteReader(False)
eform.controls(sender.name).ComboList=dt.GetComboListString("字典值")


上面的代码可以正常调用出来,可以在ComboBox中看到上面的10个值供用户选择,现在我系统实现的效果

是,如果当前table找中的“绑定到分组”字段已经有使用过的值,则不显示出来,以达到每个值只能使

用一次的目的;


比如当前窗口的table中已经使用了“语音分组05”和“语音分组08”,那么当用户选择ComboBox时,则

不显示着两个词,只能选择剩下没有使用的值;

希望各位老师前辈可以指点一下,多谢了!
[此贴子已经被作者于2019/2/12 17:34:29编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/29 14:55:00 [只看该作者]

 

Dim dt As DataTable
Dim ls As List(Of String) = dt.getvalues("字典值")
For Each r As Row In Tables("表A").Rows
    If ls.Contains(r("第一列")) Then
        ls.Remove(r("第一列"))
    End If
Next
eform.controls(sender.name).ComboList = String.Join("|", ls.ToArray)

 


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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/1/29 16:05:00 [只看该作者]

老师,代码如下,没做到排除,还是出来10个,table里面已经使用了两个分组!

Dim cmd As New SQLCommand
Dim r As Row =Foxtools.Tools.Rows(eform)
cmd.C
cmd.CommandText = "S-E-L-E-C-T * From {ZD_一级字典} Where 上级字典= '语音话术' and 字典名称= '绑定到分组'"
Dim dt As DataTable = cmd.ExecuteReader(False)

'eform.controls(sender.name).ComboList=dt.GetComboListString("字典值")
'Dim dt As DataTable

Dim ls As List(Of String) = dt.getvalues("字典值")
For Each r1 As Row In Tables(eform.name.replace("二级","") & "_Table1").Rows
    If ls.Contains(r1("绑定到分组")) Then
        ls.Remove(r1("绑定到分组"))
    End If
Next

eform.controls(sender.name).ComboList = String.Join("|", ls.ToArray)

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/29 19:56:00 [只看该作者]

代码没有问题,如果有也是数据的问题。上传具体实例说明

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/10 11:33:00 [只看该作者]

老师,下面的代码,确认ls可以输出内容,r1("绑定到分组")也可以输入内容,r1("绑定到分组")的内容包含在ls中,但是排除失败,使用MessageBox.show()代码测试,(0)可以出,(1)却不能弹出,应该是If ls.Contains(r1("绑定到分组")) Then 没有判断到重复值,不知道是哪段代码的问题?


----------------------------------------------------------------------------

Dim cmd As New SQLCommand
Dim r As Row =Foxtools.Tools.Rows(eform)
cmd.C
cmd.CommandText = "S-ELECT * From {ZD_一级字典} Where 上级字典= '语音话术' and 字典名称= '绑定到分组'"
Dim dt As DataTable = cmd.ExecuteReader(False)
'eform.controls(sender.name).ComboList=dt.GetComboListString("字典值")

Dim ls As List(Of String) = dt.getvalues("字典值")
MessageBox.show(0)
For Each r1 As Row In Tables("语音话术_Table1").Rows
    If ls.Contains(r1("绑定到分组")) Then
        MessageBox.show(1)
        ls.Remove(r1("绑定到分组"))
    End If
Next
eform.controls(sender.name).ComboList = String.Join("|", ls.ToArray)

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/10 12:48:00 [只看该作者]

老师,是不是 ls As List(Of String)这种数据类型,无法直接通过代码判断是否包含字符,然后移除,我直接判断指定的值,比如“语音话术分组1”,也是无法移除的,ls是包含“语音话术分组1”这一行字符的?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/10 13:46:00 [只看该作者]

1、msgbox(dt.GetComboListString("字典值")) 弹出值看看;

 

2、msgbox(r1("绑定到分组")) 弹出值看看;

 

3、具体实例发上来测试。


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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/10 14:01:00 [只看该作者]

老师,这个msgbox弹出是正确的,就是没法排除而已,会不会是我的代码是放在Enter里面的缘故?


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


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


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




[此贴子已经被作者于2019/2/10 15:48:19编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/10 16:03:00 [只看该作者]

Dim dt As DataTable = cmd.ExecuteReader(False)
'eform.controls(sender.name).ComboList=dt.GetComboListString("字典值")

 

msgbox(dt.GetComboListString("字典值"))


Dim ls As List(Of String) = dt.getvalues("字典值")
MessageBox.show(0)
For Each r1 As Row In Tables("语音话术_Table1").Rows
msgbox("aaa" & r1("绑定到分组") & "aaa")
    If ls.Contains(r1("绑定到分组")) Then
        MessageBox.show(1)
        ls.Remove(r1("绑定到分组"))
    End If
Next
eform.controls(sender.name).ComboList = String.Join("|", ls.ToArray)

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/10 16:53:00 [只看该作者]

老师,加了 & "aaa" & 也是可以弹出的,不过还是检测不到重复?

 回到顶部
总数 25 1 2 3 下一页