0

我想知道如何正确编码下面的 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>

我还有其他几个问题,但我会一次解决一个问题!

感谢您提供的任何帮助,

伊恩

4

2 回答 2

2

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

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

如果“x”是数字,则只需输入数字,如果它们是字符串,则用引号引起来。在 Access 中使用 SQL Server 中的双引号和单引号。

顺便说一句,如果您安装了 MS Access,则可以使用“查询/查看”选项卡来构建条件,然后查看相应的 SQL 代码以获取提示。

于 2013-04-26T16:35:03.680 回答
0

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

“SELECT * FROM tableName WHERE ([Year] = #” & varDate & “#”</p>

于 2013-04-26T17:04:19.423 回答