2010-02-24 49 views
2

在我最近的問題中,我詢問了SQL Server中的分頁方法。讀一篇貼在那裏的文章,我想出了下面的代碼。一切看起來都正確但我收到以下錯誤:SQL Server分頁錯誤

除非還指定了TOP或FOR XML,否則ORDER BY子句在視圖,內聯函數,派生表,子查詢和公用表表達式中無效。

PAGEID = Request.QueryString("PAGEID") 

If PAGEID = "" or PAGEID = 0 Then 
    PAGEID = 1 
End If 

RecordsPerPage = 1 
RecordsPageSize = PAGEID * RecordsPerPage 

SQL = "SELECT * FROM (SELECT I.IMAGESID, I.IMAGESNAME, I.IMAGESSMURL, ROW_NUMBER() OVER (ORDER BY I.IMAGESID) As Row" 
SQL = SQL & " FROM IMAGES I" 
SQL = SQL & " WHERE Row > ("& RecordsPageSize - RecordsPerPage &") AND Row <= ("& RecordsPageSize &") ORDER BY I.IMAGESID DESC" 
Set objImages = objConn.Execute(SQL) 

%> 
       <div class="row"> 
        <label for="Images">Images</label> 
<% Do While Not objImages.EOF %> 
    <img src="<%=objImages("IMAGESSMURL")%>" alt="<%=objImages("IMAGESNAME")%>" border="0" /> 
<% 
objImages.MoveNext 
Loop 
%> 
+0

重複? http://stackoverflow.com/questions/2323550/paging-on-sql-server-database – 2010-02-24 04:44:53

+0

爲什麼你使用asp classic? – Hogan 2010-02-24 06:06:58

+0

使用Classic ASP的地方仍然很多。我正在謀生。它像COBOL一樣,它還沒有消失。 – Taptronic 2011-07-20 13:28:42

回答

1

嘗試增加其他「)A」的地方之前,改變I.imagesid爲A.imagesid:

SQL = SQL & " FROM IMAGES I) A" 
    SQL = SQL & " WHERE Row > ("& RecordsPageSize - RecordsPerPage &") AND Row <= ("& RecordsPageSize &") ORDER BY A.IMAGESID DESC" 

錯誤消息告訴你,你可以通過在不使用命令子查詢。

+0

現在,我得到「[Microsoft] [ODBC SQL Server驅動程序] [SQL Server]關鍵字'ORDER'附近的語法不正確。」 – zurna 2010-02-24 04:24:41

+0

嗯,我試圖簡化這個例子。但是我明白你的觀點,我錯誤地忘記刪除子查詢。不過,儘管您提供的最新代碼對我來說似乎是正確的,但現在我得到了一個不同的錯誤。 「[Microsoft] [ODBC SQL Server驅動程序] [SQL Server]無效的列名稱'行'。」 – zurna 2010-02-24 04:29:27

+0

我糾正了第一段代碼。我錯過了子查詢的名稱,所以我添加了)A和A.IMAGESID,而不是按順序中的I.IMAGESID。 – 2010-02-24 04:31:21