经典ASP SELECT * WHERE x和x

时间:2013-04-26 16:26:58

标签: sql asp-classic

我想知道如何正确编码下面的strSQL行以返回正确的结果。

SELECT * FROM Reviews WHERE Month=x AND Year=x

我会在月份和年份进行硬编码。

我正在使用访问数据库运行asp页面。我尝试了上面的字符串(月份和年份硬编码)但它没有用。

服务器日志页面已关闭,所以我无法检查它,即使我的浏览器设置为显示完整的错误消息,我看到的只是500 - 内部服务器错误。

我已经检查了评论表中与我编码的月份和年份匹配的记录,并且2012年3月有相当多的记录,因此它应该显示多个结果。

月份和年份字段是用户手动输入的数据库中的单独字段。

<%
Set adoCon = Server.CreateObject("ADODB.connection")' initialize connection
Set ors = Server.CreateObject("ADODB.RecordSet")' initialize record set

adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("database.mdb")

Const COLUMN_COUNT = 1
strSQL = "SELECT * FROM Reviews WHERE Month= 'March' AND Year= '2012'"

coll_width=100/COLUMN_COUNT

column = 0 ' initialize counter

ors.open strSQL,adoCon,1,1  'open record set

Do While Not ors.EOF
If column = 0 Then Response.Write "<TR>" 

%>
<td width="<%=coll_width%>%" valign="top" ><table width="100%" border="0">
<tr    > 
<td height="100%">
<div class="extra_container post reviews">
<figure> <img src="images/<% = oRs.Fields("Image") %>" width="200" alt=""> </figure>
<div>
<div class="date">
<% = oRs.Fields("ReleaseDate") %>
</div>
<div class="title">
<% = oRs.Fields("Artist") %> - <% = oRs.Fields("Album") %>
</div>
<% = oRs.Fields("Teaser") %>
<br>
<a href="cdreviewsmain.asp?pl=<% = oRs.Fields("ID") %>" class="button">more</a> </div>
</div>
</td>
</tr>
</table>
</td>
<% column = column + 1 
If column = COLUMN_COUNT Then 
Response.Write "</TR>" & vbNewLine 
column = 0 ' start over! 
End If 
oRS.MoveNext 
Loop %>
<% ors.Close 'Close the database connection
'SET ors = Nothing 'Clean up after yourself
%>
</table>

我还有其他一些问题,但我会逐一对它们进行排序!

感谢您提供的任何帮助,

伊恩

2 个答案:

答案 0 :(得分:2)

MONTH和YEAR是SQL中的保留字...尝试使用[]

转义它们
SELECT * FROM Reviews WHERE [Month]=x AND [Year]=x

如果'x'是数字,那么只需输入数字,如果它们是字符串,则放入引号。在Access中使用SQL Server中的双引号和单引号。

BTW,如果安装了MS Access,可以使用“查询/视图”选项卡构建条件,然后查看相应的SQL代码以获取提示。

答案 1 :(得分:0)

据我记得,在访问中使用日期时必须使用哈希,如:

“SELECT * FROM tableName WHERE([Year] =#”&amp; varDate&amp;“#”