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


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

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

帅哥哟,离线,有人找我吗?
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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lunengcheng
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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)

 回到顶部
帅哥哟,离线,有人找我吗?
lunengcheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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”这一行字符的?

 回到顶部
帅哥哟,离线,有人找我吗?
lunengcheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/10 18:10:00 [显示全部帖子]


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


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


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





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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/10 18:11:00 [显示全部帖子]


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

这张是排除没成功,全部显示出来的!

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/10 20:29:00 [显示全部帖子]

老师,这样改报下面的错误!

.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.10.9.1
错误所在事件:自定义函数Translate_Ctr_Enter
详细错误信息:
调用的目标发生了异常。
未找到类型“List(Of String)”的公共成员“split”。

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


加好友 发短信
等级:童狐 帖子:272 积分:2125 威望:0 精华:0 注册:2018/8/13 9:55:00
  发帖心情 Post By:2019/2/12 14:22:00 [显示全部帖子]

老师,按照上面的代码修改如此,排除成功了,不过有个问题,就是只能排除第一行,剩下的行无法排除,比如语音话术分组1使用了,可以排除,但是语音话术分组3和语音话术分组7这些已经使用的值没法排除,不知道是哪里的问题?

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)

Dim ls As new List(Of String)
Dim str = dt.GetComboListString("字典值")
ls.addrange(str.replace("|", chr(13)).split(chr(13)))

For Each r1 As Row In Tables("语音话术_Table1").Rows
    If ls.Contains(r1("绑定到分组")) Then
        ls.Remove(r1("绑定到分组"))
    End If
Next

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


 回到顶部
总数 15 1 2 下一页