[SQL Server] Affichage page / page

Affichage page / page [SQL Server] - SQL/NoSQL - Programmation

Marsh Posté le 08-04-2003 à 14:50:34    

comment fait ton pour afficher par exemple 10 articles par pages ?
 il n'y pas de fonction LIMIT comme avec mysql


---------------
Quoi ? 2.21 Gigowatts ! Mais seul un éclair peut délivrer une telle puissance !
Reply

Marsh Posté le 08-04-2003 à 14:50:34   

Reply

Marsh Posté le 08-04-2003 à 16:43:47    

Non, il n'y a pas de LIMIT sous SQL Server. Ce qui s'en rapproche le plus est TOP :
 
SELECT * FROM Client TOP 5
 
=> Extrait les 5 1eres lignes de la table Client
 
SELECT * FROM Client TOP 5 PERCENT
 
=> Extrait 5% de la table à partir du début


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-04-2003 à 17:11:46    

Et si tu veux simuler limit :


select * from (
    select top <%NB_RECORDS%> * from (
        select top <%OFFSET + NB_RECORDS%> * from test order by idtest
    ) as t1 order by idtest DESC
) as t2 order by idtest  

 
 
Ou tu remplaces <%NB_RECORDS%> et <%OFFSET + NB_RECORDS%>.
Cette requète à un defaut. G la felemme de tout expliquer. Ben tiens, viens lire mon topic ici :
http://www.developpez.net/forums/v [...] sc&start=0
Je suis pas loin d'aboutir à qqch de bien (pr toi ça sera surement bon).

Reply

Marsh Posté le 08-04-2003 à 17:29:15    

Si tu passes pas MDAC (Connection OLE DB ou ODBC) il y a une solution supplémentaire, à peine moins performante et plus lisible :
 
Exemple avec une page ASP (code VB)
 

Code :
  1. dim cnx
  2. set cnx = server.createobject("ADODB.Connection" )
  3. cnx.open (connectionString)
  4. dim rs
  5. set rs = server.createobject("ADBDO.RecordSet" )
  6. set rs.ActiveConnection = cnx
  7. rs.cursorLocation = 2 ' adUseServer (default)
  8. rs.cursorType = 3 ' adOpenStatic (mode déconnecté : si un utilisateur insert/delete/update des données, tu ne vois pas les modifs, garantissant une cohérence des données tout au long de la lecture. légère baisse de performance. Si les données ne sont jamais lises à jour, alors utilise 0 (adOpenForwardOnly)
  9. rs.open ("select ..." )
  10. rs.move(min(lineDeb, rs.recordcount))
  11. for i = min(lineDeb, rs.recordcount) to min(lineDeb, rs.recordcount)
  12.   if not rs.EOF then
  13.     response.write rs("field1" )
  14.     rs.movenext
  15.   end if
  16. next
  17. rs.close
  18. set rs = nothing
  19. cnx.close
  20. set cnx = nothing
  21. function min(a, b)
  22.    if a <= b then
  23.       min = a
  24.    else
  25.       min = b
  26. end function


Message édité par MagicBuzz le 08-04-2003 à 17:29:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed