以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  多条件筛选  (http://foxtable.com/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
--  

如果是一个人,显示的结果是 张三 如果是两个人 显示的是 张三’,‘李四   如果是三个人 显示的是张三’,‘李四 ’,‘王五,格式还是不对