以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 多条件筛选 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80998)
|
-- 作者:kaituozhe
-- 发布时间:2016/2/16 9:42:00
-- 多条件筛选
从银行现金汇总表的交易户名列及涉及人员提取户名设置查询条件,从银行明细表提取数据,为此写了以下代码,但是该代码实现不了我所想要的功能
Dim str1 As String Dim str2 As String If Tables("银行现金汇总").current.IsNull("交易户名") = False AndAlso Tables("银行现金汇总").current.IsNull("涉及人员") = False Then \'如果工号列不为空 Dim nms1() As String = Tables("银行现金汇总").current("交易户名").Split(",") \'将工号列内容拆分成数组 Dim nms2() As String = Tables("银行现金汇总").current("涉及人员").Split(",") \'将工号列内容拆分成数组 For Each nm1 As String In nms1 \'遍历参与加工此产品的每个工号 str1 = str1 & " & nm1 & " & "," Next For Each nm2 As String In nms2 \'遍历参与加工此产品的每个工号 str2 = str2 & " & nm2 & " & "," Next \'Tables("交易明细_table1").filter = "["交易户名"] In {str1} And ["对方户名"] In {str2}" End If
|
-- 作者:kaituozhe
-- 发布时间:2016/2/16 9:50:00
--
Tables("表A").Filter = "[对方户名] In (\'郭俊鹏\') and [交易户名] In (\'张三\',\'李四\',\'王五\',\'李六\')" 上述代码在组合条件时 单引号怎么解决呀?
|
-- 作者:大红袍
-- 发布时间:2016/2/16 9:55:00
--
Dim str1 As String Dim str2 As String If Tables("银行现金汇总").current.IsNull("交易户名") = False AndAlso Tables("银行现金汇总").current.IsNull("涉及人员") = False Then \'如果工号列不为空 str1 = Tables("银行现金汇总").current("交易户名") str2 = Tables("银行现金汇总").current("涉及人员") Tables("交易明细_table1").filter = "[交易户名] In (" & str1 & ") And [对方户名] In (" & str2 & ")" End If
|
-- 作者:kaituozhe
-- 发布时间:2016/2/16 10:06:00
--
这是修改后的代码
Dim str1 As String Dim str2 As String If Tables("银行现金汇总").current.IsNull("交易户名") = False AndAlso Tables("银行现金汇总").current.IsNull("涉及人员") = False Then \'如果工号列不为空 Dim nms1() As String = Tables("银行现金汇总").current("交易户名").Split(",") \'将工号列内容拆分成数组 Dim nms2() As String = Tables("银行现金汇总").current("涉及人员").Split(",") \'将工号列内容拆分成数组 For Each nm1 As String In nms1 \'遍历参与加工此产品的每个工号 str1 = str1 & " & nm1 & " & "," Next For Each nm2 As String In nms2 \'遍历参与加工此产品的每个工号 str2 = str2 & " & nm2 & " & "," Next Tables("交易明细_table1").filter = " [交易户名] In \'" & (str1) & "\' And [对方户名] In \'" & (str2) & "\'" End If
|
-- 作者:大红袍
-- 发布时间:2016/2/16 10:09:00
--
Dim str1 As String Dim str2 As String If Tables("银行现金汇总").current.IsNull("交易户名") = False AndAlso Tables("银行现金汇总").current.IsNull("涉及人员") = False Then \'如果工号列不为空 str1 = Tables("银行现金汇总").current("交易户名").Replace(",", "\',\'") str2 = Tables("银行现金汇总").current("涉及人员").Replace(",", "\',\'") Tables("交易明细_table1").filter = "[交易户名] In (\'" & str1 & "\') And [对方户名] In (\'" & str2 & "\')" End If
|
-- 作者:kaituozhe
-- 发布时间:2016/2/16 10:17:00
--
执行上述修改后的代码,错误提示如下:
.NET Framework 版本:2.0.50727.5485 Foxtable 版本:2015.12.22.1 错误所在事件: 详细错误信息: 语法错误: IN 关键字后面的项必须用逗号分隔,并且必须用括号括起来。
|
-- 作者:大红袍
-- 发布时间:2016/2/16 10:19:00
--
不可能,请弹出msgbox(str1)、msgbox(str2)
|
-- 作者:kaituozhe
-- 发布时间:2016/2/16 10:28:00
--
执行5楼代码错误提示
.NET Framework 版本:2.0.50727.5485 Foxtable 版本:2015.12.22.1 错误所在事件:加载[银行明细]失败! 详细错误信息: 至少一个参数没有被指定值。
|
-- 作者:大红袍
-- 发布时间:2016/2/16 10:35:00
--
这个是筛选啊,跟加载一点关系都没有。
如果报错,肯定是其它代码影响的。做例子上来测试。
|
-- 作者:kaituozhe
-- 发布时间:2016/2/16 10:37:00
--
如果是一个人,显示的结果是 张三 如果是两个人 显示的是 张三’,‘李四 如果是三个人 显示的是张三’,‘李四 ’,‘王五,格式还是不对
|