Estrarre record in ordine casuale

  • Creatore Discussione Creatore Discussione Frango
  • Data di inizio Data di inizio

Frango

Nuovo Utente
13 Feb 2007
6
0
0
Ho un file asp che mostra i risultati di una query fatta con una stored procedures. I risultati vengono suddivisi su tre colonne e la stored procedures oltre ad estrarre 6 record (immagini) li randomizza.
Però ho notato che a volte quando faccio il refresh della pagina asp che mostra i risultati non sempre vengono caricati tutti e sei, ma a volte ne carica 2 o 3 ma normalmente sono 6.
Il mio dubbio è che ci possa essere qualche errore nel codice anche se la pagina asp funziona senza riportare alcun errore. Da cosa potrebbe dipendere questo piccolo problema?

Posto sia file asp che la stored procedure:


<% response.expires=0 %>
<!--#include virtual="/include/inc_functions.asp"-->
<%

Dim rsFiles
Dim cnFiles
Dim contatore

Set cnFiles = Server.CreateObject("ADODB.Connection")
Set rsFiles = Server.CreateObject("ADODB.Recordset")

cnFiles.Open Application("Database")
rsFiles.Open "Users_Random ", cnFiles, adOpenStatic, adLockReadOnly

If Not rsFiles.EOF Then

%>

<table border="0">
<tr>

<%
contatore = 0

While rsFiles.EOF = False

If contatore = 3 Then
contatore = 0
Response.Write "</tr><tr>"
End If

%>
<TD><A HREF="view_profile.asp?userid=<%=rsFiles("UserID")%>"><img src="../public/<%=rsFiles("FileID")%>.<%=rsFiles("FileType")%>" width="63" height="65" alt="<%=rsFiles("ScreenName")%>"></a></TD>
<%

rsFiles.MoveNext

contatore = contatore + 1
Wend
rsFiles.Close

End if

%>
</tr>
</table>

<%
Set rsFiles = Nothing
cnFiles.Close
Set cnFiles = Nothing
%>
_______________________________________________
E la stored procedure è la seguente:

CREATE PROCEDURE Users_Random

AS
BEGIN
Declare @MaxValue int, @RandomNumber float

SELECT @MaxValue = Max(UserID) FROM Users U

SELECT @RandomNumber = rand() * @MaxValue

SELECT TOP 6 *, F.*, U.*, FT.FileType
FROM Files F
INNER JOIN FileTypes FT ON FT.FileTypeID = F.FileTypeID
INNER JOIN Users U ON U.UserID = F.UserID
WHERE F.UserID>= @RandomNumber AND F.PrimaryImage = 1
ORDER BY NewID()

END
_________________________________________
Qualche suggerimento?
Grazie.
 
Ultima modifica:

Discussioni simili