经典多选列表框 SQL 查询

Classic Multiselect listbox SQL query

已解决!
解决方案: 在下面的代码中对其进行编辑将是一个简洁的解决方案。

strCriteria = "" & replace(tagname,", ","','") & ""



原题:

我有一个列表框,其中填充了 SQL Server Express table 列的内容。列表框所在的 HTML 表单将生成 HTML table 报告。

我的经验是列表框将多个选定值存储为 VALUE1, VALUE2, VALUE3,而 SQL 查询需要这些值作为 'VALUE1', 'VALUE2', 'VALUE3' - 使用 gnyphs。因此,它将只选择一个值,因为查询会说 'VALUE1, VALUE2, VALUE3' - gnyphs around the whole。正如您在下面的代码中看到的那样,我已经尝试使用替换,但是由于这不起作用,我不确定我是否正确地处理了这个问题。

我做了很多谷歌搜索并找到了很多有用的文章,尽管它们是针对 SQL Server 2005 及更早版本的,一些功能不再受支持,我相信可能会有一些更方便的我不知道的功能。

我该如何最好地处理这个问题?

<table class="reporttable">
<tr>
<%
dim strSQL,x,strCriteria

strCriteria = replace(tagname,", ","', '")

'Open the recordset object executing the SQL statement and return records
strSQL = "SELECT * FROM dbo.notes WHERE tag IN('" & strCriteria & "') AND ((dt < '" & dTo & "') AND (dt > '" & dFrom & "')) ORDER BY dt DESC"


set objRecordSet = objConn.Execute (strSQL)

for each x in objRecordSet.Fields
     response.write("<th>" & ucase(x.name) & "</th>")
next
%>
</tr>
<%do until objRecordSet.EOF%>
<tr>
<%
for each x in objRecordSet.Fields
     if x.name="no" then%>
              <%else%>
         <td><%Response.Write(x.value)%> </td>
     <%end if
next
%>

<%objRecordSet.MoveNext%>
</tr>
<%
loop

objRecordSet.close
set objRecordSet=nothing
objConn.close
set objConn=nothing
%>
</table>

是的,它必须以某种方式保持经典 ASP,因为它必须适合非常笨拙且功能有限的浏览器。

我对你的问题感到困惑。但我想我可能有你想要的答案。

您实际上是在问如何将引号放在您的 mutli-select-box 值周围吗?

strCriteria = "'" & replace(tagname,", ","','") & "'"

每边额外的“'”开始和结束引号。 (或你所说的 gnyphs)