以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 怎么找出适合多个场所应用的产品呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129776) |
-- 作者:龙潭春早 -- 发布时间:2019/1/5 22:08:00 -- [求助] 怎么找出适合多个场所应用的产品呢? 1)任务 一个产品有好多个应用场所,可能有几十个、上百个。 通过多值字段,给每个产品都添加了这样的属性。 现在,想要找出其中适合多个场所的所有产品,比如适用于十几个、二十几个场所的。 2)设计 在窗口中,用 CheckedListBox 多选了这些场所。 但是,想不好代码应该怎么写了,请大神们帮帮忙。 |
-- 作者:有点甜 -- 发布时间:2019/1/6 21:16:00 -- 合成这样的条件,如
"应用场所 like \'%酒店%\' or 应用场所 like \'%餐厅%\' or 应用场所 like \'%快餐%\'"
写代码这样写,如
Dim str As String = "酒店,餐厅" |
-- 作者:龙潭春早 -- 发布时间: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编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/1/7 16:10:00 -- Dim str As String = Forms("窗口A").Controls("CheckedListBox1").Value Tables("表C").filter = filter |
-- 作者:龙潭春早 -- 发布时间:2019/1/7 17:05:00 -- 1)是要 找出同时适用于这些场所的所有产品 那么,下面的 or,是不是要改成 “ and ”? filter &= " or 应用场所 like \'%" & s & "%\'" 2)代码中的 SubString(3),是什么意思呢? 3)没查到 msgbox,能给说明一下吗?
|
-- 作者:有点甜 -- 发布时间:2019/1/7 17:14:00 -- Dim str As String = Forms("窗口A").Controls("CheckedListBox1").Value Tables("表C").filter = filter
http://www.foxtable.com/webhelp/scr/0240.htm
|
-- 作者:龙潭春早 -- 发布时间:2019/1/7 19:36:00 -- 甜老师,好像有些不对。 应该是把 1楼 中第二张图通过 CheckedListBox 选中的使用场所,和第一张图 通过 多值字段给 “应用场所” 列中之前赋予的各个场所进行比较。 如果多值字段 “应用场所” 列中的场所,包含了 CheckedListBox 选中的所有使用场所,则显示这些行; 否则,不显示。 这个要怎么实现呢?
|
-- 作者:有点蓝 -- 发布时间:2019/1/7 20:35:00 -- 就是6楼的用法。 |
-- 作者:龙潭春早 -- 发布时间:2019/1/7 22:58:00 -- 嗯 好用! 谢谢啦!!!
|
-- 作者:龙潭春早 -- 发布时间:2019/1/9 15:12:00 -- 1)找出了同时适用于几个场所的所有产品,但是同一种产品会有很多的品牌和型号。 想在 6楼 代码的基础上,再进一步地找出这些产品中的某些型号。 2)在 6楼 代码的最后,再加上筛选代码: Dim str As String = Forms("窗口A").Controls("CheckedListBox1").Value Tables("表C").filter = filter And "型号选择 = True" 3)显示错误: .NET Framework 版本:2.0.50727.8762 Foxtable 版本:2018.10.9.1 错误所在事件:窗口,窗口A,型号选择,Click 详细错误信息: 从字符串“ 应用场所 like \'%酒店%\' and 应用场所”到类型“Long”的转换无效。 输入字符串的格式不正确。 这里随机选择了酒店等几个场所 4)怎么修改好呢? |