以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]SQLGetComboListString提取值的求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69669)

--  作者:huangfanzi
--  发布时间:2015/6/9 9:48:00
--  [求助]SQLGetComboListString提取值的求助
假定后台角色表的结构与内容如下:
角色名    姓名
A角色    姓名A,姓名B
B角色    姓名A,姓名C,姓名D
现在要提取角色A的姓名做个SQLGetComboListString,我目前只会写如下代码:
DataTables("角色表").SQLGetComboListString("姓名","[角色名] = \'A角色\'")
由于SQLGetComboListString的分隔是用“|”,我上面的代码应该如何改,谢谢!

--  作者:大红袍
--  发布时间:2015/6/9 9:49:00
--  

 

[此贴子已经被作者于2015/6/9 9:49:56编辑过]

--  作者:大红袍
--  发布时间:2015/6/9 9:51:00
--  
DataTables("角色表").SQLGetComboListString("姓名","[角色名] = \'A角色\'").Replace(",", "|")
--  作者:huangfanzi
--  发布时间:2015/6/9 9:55:00
--  
上面的写法看懂了,但还有一种情况按上面的写法会提取到重复值,这种情况是:

DataTables("角色表").SQLGetComboListString("姓名","[角色名] = \'A角色\'" or "[角色名] = \'B角色\'").Replace(",", "|")
另外请问下,SQL中的 or 是不是像我上面这样用的。
[此贴子已经被作者于2015/6/9 9:57:45编辑过]

--  作者:Bin
--  发布时间:2015/6/9 10:00:00
--  
这代码也不应该出现重复值啊.

另外你条件搞错了 标点符号不对 
DataTables("角色表").SQLGetComboListString("姓名","[角色名] = \'A角色\'  or  [角色名] = \'B角色\'").Replace(",", "|")

--  作者:huangfanzi
--  发布时间:2015/6/9 10:06:00
--  
由于A角色中存在用户A,B角色中也存在用户A,执行完SQLGetComboListString后的结果是:姓名A,姓名B | 姓名A,姓名C,姓名D,再通过Replace(",", "|")成为  姓名A|姓名B|姓名A|姓名C|姓名D,是不是会这样,请赐教!
--  作者:大红袍
--  发布时间:2015/6/9 10:07:00
--  
Dim str As String = "|"
For Each xms As String In DataTables("角色表").GetValues("姓名", "角色名 = \'A\' or 角色名 = \'B\'")
    Dim ary() As String = xms.Split(",")
    For Each xm As String In xms
        If str.Contains("|" & xm & "|") = False Then
            str &= xm & "|"
        End If
    Next
Next
msgbox(str.Trim("|"))

--  作者:Bin
--  发布时间:2015/6/9 10:29:00
--  
Dim str As String = "|"
For Each xms As String In DataTables("角色表").SQLGetValues("姓名", "角色名 = \'A\' or 角色名 = \'B\'")
    For Each xm As String In xms.Split(",")
        If str.Contains("|" & xm & "|") = False Then
            str &= xm & "|"
        End If
    Next
Next
msgbox(str.Trim("|"))