2010-02-24 4 views
2

Dans ma question récente, j'ai demandé des méthodes de pagination dans SQL Server. En lisant un article posté par quelqu'un, j'ai trouvé le code suivant. Tout me semble correct mais l'erreur suivante s'affiche:Erreur de pagination SQL Server

La clause ORDER BY n'est pas valide dans les vues, les fonctions inline, les tables dérivées, les sous-requêtes et les expressions de table communes, sauf si TOP ou FOR XML est également spécifié.

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

Dupliquer? http://stackoverflow.com/questions/2323550/paging-on-sql-server-database –

+0

Pourquoi diable utilisez-vous asp classic? – Hogan

+0

Il existe encore des tas d'endroits utilisant Classic ASP. Je gagne ma vie en le maintenant. C'est comme COBOL, ce n'est pas encore parti. – Taptronic

Répondre

1

Essayez d'ajouter une autre «) A » avant le où et changer le I.imagesid pour A.imagesid:

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

Le message d'erreur vous dit que vous ne pouvez pas utiliser une commande par un sous-requête.

+0

Maintenant, je reçois "[Microsoft] [Pilote ODBC SQL Server] [SQL Server] syntaxe incorrecte près du mot clé 'ORDER'." – zurna

+0

Eh bien, j'essayais de simplifier l'exemple. Mais je vois votre point de vue, j'ai oublié par erreur d'enlever la sous-requête. Cependant, bien que les derniers codes que vous avez fournis me semblent corrects, je reçois une erreur différente maintenant. "[Microsoft] [Pilote ODBC SQL Server] [SQL Server] Nom de colonne non valide" Row "." – zurna

+0

J'ai corrigé le premier morceau de code. J'ai manqué le nom de la sous-requête donc j'ai ajouté) A et A.IMAGESID au lieu de I.IMAGESID dans l'ordre par. –