Foxtable(狐表)用户栏目专家坐堂 → [求助] 怎么找出适合多个场所应用的产品呢?


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

主题:[求助] 怎么找出适合多个场所应用的产品呢?

美女呀,离线,留言给我吧!
龙潭春早
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
[求助] 怎么找出适合多个场所应用的产品呢?  发帖心情 Post By:2019/1/5 22:08:00 [只看该作者]


1)任务

           一个产品有好多个应用场所,可能有几十个、上百个。

           通过多值字段,给每个产品都添加了这样的属性。

           现在,想要找出其中适合多个场所的所有产品,比如适用于十几个、二十几个场所的。

图片点击可在新窗口打开查看此主题相关图片如下:应用场所 - 用多值字段,多选输入了所有场所.png
图片点击可在新窗口打开查看


2)设计

           在窗口中,用 CheckedListBox 多选了这些场所。

           但是,想不好代码应该怎么写了,请大神们帮帮忙。

图片点击可在新窗口打开查看此主题相关图片如下:应用场所 - 想根据场所,筛选出所有适用的产品.png
图片点击可在新窗口打开查看




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


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

合成这样的条件,如

 

"应用场所 like '%酒店%' or 应用场所 like '%餐厅%' or 应用场所 like '%快餐%'"

 

写代码这样写,如

 

Dim str As String = "酒店,餐厅"
Dim filter As String = ""
If str > "" Then
    For Each s As String In str.split(",")
        filter &= " or 应用场所 like '%" & s & "%'"
    Next
End If
filter = filter.SubString(3)
msgbox(filter)


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/7 15:43:00 [只看该作者]

【1】上面 1楼 的第二张图是示意性的,表示 随机的选取几个应用场所找出(筛选出)同时适用于这些场所的所有产品

【2】试着写了一段代码,还是觉得不对,语法也有问题。

       甜老师能根据以下意思,给出一套代码吗?

' 2. 将窗口确认按钮的 Clik 事件代码设置为:

'   2.1 ' * 定义

Dim ckl As WinForm.CheckedListBox = Forms("窗口A").Controls("CheckedListBox1")

Dim plcs As New List(of String)

'   2.2 ' * 获取已经勾选的项目

For i As Integer = 0 To ckl.Items.count - 1

    If ckl.GetItemChecked(i) Then

        plcs.Add(ckl.Items(i)) '* 将选中的项目名(即应用场所名)赋值给plcs字符串集合

    End If

Next

'   2.3 ' * 提示

If plcs.Count = 0 Then

    MessageBox.Show("至少要选择一项","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

    Return

End If

 

'   2.4 ' * 设置产品的(应用场所)过滤条件

Dim filter As String = ""

'  If plcs > "" Then

For Each plc As String In plcs '* 遍历应用场所集合

    filter & = " and 应用场所 like '%" & plc & "%'"

Next

End If

 

这里,还应该有一个 filter 和"应用场所"的比较代码吧?怎么写呢?

 

Tables("表C").filter = filter


[此贴子已经被作者于2019/1/7 15:47:57编辑过]

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


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

Dim str As String = Forms("窗口A").Controls("CheckedListBox1").Value
Dim filter As String = ""
If str > "" Then
    For Each s As String In str.split(",")
        filter &= " or 应用场所 like '%" & s & "%'"
    Next
End If
filter = filter.SubString(3)
msgbox(filter)

Tables("表C").filter = filter


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/7 17:05:00 [只看该作者]

1)是要 找出同时适用于这些场所的所有产品
   
     那么,下面的 or,是不是要改成 “ and ”?

           filter &= " or 应用场所 like '%" & s & "%'"

2)代码中的 SubString(3),是什么意思呢?

3)没查到 msgbox,能给说明一下吗?

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


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

Dim str As String = Forms("窗口A").Controls("CheckedListBox1").Value
Dim filter As String = ""
If str > "" Then
    For Each s As String In str.split(",")
        filter &= " and 应用场所 like '%" & s & "%'"
    Next
End If
filter = filter.SubString(4)
msgbox(filter)

Tables("表C").filter = filter

 

http://www.foxtable.com/webhelp/scr/0240.htm

 


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/7 19:36:00 [只看该作者]

甜老师,好像有些不对。

应该是把 1楼 中第二张图通过 CheckedListBox 选中的使用场所,和第一张图 通过 多值字段给 “应用场所” 列中之前赋予的各个场所进行比较。

如果多值字段 “应用场所” 列中的场所,包含了 CheckedListBox 选中的所有使用场所,则显示这些行; 否则,不显示。

这个要怎么实现呢?

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


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

就是6楼的用法。

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/7 22:58:00 [只看该作者]

嗯 好用!

谢谢啦!!!

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/9 15:12:00 [只看该作者]

1)找出了同时适用于几个场所的所有产品,但是同一种产品会有很多的品牌和型号。

      想在 6楼 代码的基础上,再进一步地找出这些产品中的某些型号。

图片点击可在新窗口打开查看此主题相关图片如下:应用场所 - 进一步选出产品型号.png
图片点击可在新窗口打开查看


2)在 6楼 代码最后,再加上筛选代码: 

Dim str As String = Forms("窗口A").Controls("CheckedListBox1").Value
Dim filter As String = ""
If str > "" Then
    For Each s As String In str.split(",")
        filter &= " and 应用场所 like '%" & s & "%'"
    Next
End If
filter = filter.SubString(4)
msgbox(filter)


Tables("表C").filter = filter And "型号选择 = True"



3)显示错误:

.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,窗口A,型号选择,Click
详细错误信息:
从字符串“ 应用场所 like '%酒店%' and 应用场所”到类型“Long”的转换无效。
输入字符串的格式不正确。


这里随机选择了酒店等几个场所

4)怎么修改好呢?




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