【发布时间】:2015-05-21 17:33:33
【问题描述】:
在相应的查询表单上使用单选按钮时,以下 SELECT 语句可以正常工作,但是当我将单选更改为复选框并在选中 2 个或更多复选框的情况下执行查询时会出错。任何关于我做错的建议将不胜感激。
strSelect = "SELECT * FROM qryMyQuery WHERE"
Select Case strOption
Case "Name"
strSelect = strSelect & " Name='" & UCase(strName) & "'"
Case "Location"
strSelect = strSelect & " Location='" & UCase(strLocation) & "'"
Case "Type"
strSelect = strSelect & " Type='" & UCase(strType) & "'"
Case "Season"
strSelect = strSelect & " Season='" & UCase(strSeason) & "'"
Case "Duration"
strSelect = strSelect & " Duration='" & UCase(strDuration) & "'"
Case "Year"
strSelect = strSelect & " Year='" & UCase(strYear) & "'"
End Select
错误发生在 SELECT 语句后不久的第 111 行,就在我建立数据库连接之后。
第 111 行: 设置 RS = dB.Execute(strSelect)
错误如下:
用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80040e14” [Microsoft][ODBC Microsoft Access Driver] WHERE 子句中的语法错误。 /query2.asp,第 111 行
这是简化的查询表单...
<%@ Language="VBScript" %>
<%
' *** Dim the variables ***
Dim strName
Dim strLocation
Dim strType
Dim strSeason
Dim strYear
Dim strDuration
Dim strSubmit
Dim DB
Dim strInsert
Dim seloption
' *** Open the database ***
Set DB = Server.CreateObject("ADODB.Connection")
DB.ConnectionTimeout=60
DB.Open "XXXX"
%>
<FORM ACTION="query2.asp" METHOD="get">
<B>Object Name:</B>
<INPUT TYPE="checkbox" NAME="seloption" VALUE="Name" CHECKED>
<INPUT TYPE="text" NAME=Name>
<B>Location/Region:</B>
<INPUT TYPE="checkbox" NAME="seloption" VALUE="Location">
<SELECT size=1 name=Location>
<option name="Location" value="AAA">AAA</option>
<option name="Location" value="BBB">BBB</option>
</select>
<B>Season:</B>
<INPUT TYPE="checkbox" NAME="seloption" VALUE="Season">
<SELECT size=1 name=Season>
<option name="Season" value="Summer">Summer</option>
<option name="Season" value="Fall">Fall</option>
</select>
<B>Type:</B>
<INPUT TYPE="checkbox" NAME="seloption" VALUE="Type">
<SELECT size=1 name=Type>
<option name="Type" value="CCC">CCC</option>
<option name="Type" value="DDD">DDD</option>
</select>
<B>Year:</B>
<INPUT TYPE="checkbox" NAME="seloption" VALUE="Yr">
<SELECT size=1 name=Yr>
<option name="Year" value="2015">2015</option>
<option name="Year" value="2014">2014</option>
<option name="Year" value="various">various</option>
</select>
<B>Duration:</B>
<INPUT TYPE="checkbox" NAME="seloption" VALUE="Duration">
<SELECT size=1 name=Duration>
<option name="Duration" value="1 day">1 day</option>
<option name="Duration" value="2 days">2 days</option>
<option name="Duration" value="na">n/a</option>
</select>
<INPUT TYPE="submit" VALUE="Submit Query">
<INPUT TYPE="submit" VALUE="Show All" NAME="btnAll">
<INPUT TYPE="reset" VALUE="Clear Form">
</FORM>
<%
dB.Close
%>
【问题讨论】:
-
您的年份是否存储为字符串?即您是否需要将年份标准用引号括起来?
-
你能打印产生这个错误的查询吗?
-
表中的列以数值命名(即 2010、2011 等)。话虽如此,我似乎记得在 MS Access 中保留了 Year 一词,不应该使用?
-
查询表格如下- 篇幅见谅...
-
抱歉,字符太多,无法在此处粘贴。有关如何发布查询表单的任何建议?
标签: vbscript