Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Apokalypse

[Resolvido] RND(campo) não funciona no asp

Recommended Posts

Pessoal, não sou programador ASP e sim PHP, mas estou desenvolvendo uma ferramenta para um cliente que precisa ser em ASP. Estou tendo algumas dificuldades em obter dados randômicos do banco de dados (MS Access).

 

Como eu fiz (quero sempre 2 ítens randomicamente do banco de dados MSAccess):

Set rsProdutosRandomicos = Server.CreateObject("ADODB.Recordset")
queryProdutosRandomicos = "SELECT TOP 2 produto_id, produto_nome, produto_comentario, produto_preco, versao_nome FROM versoes INNER JOIN produtos ON versao_id = produto_id WHERE produto_promocao = 1  ORDER BY RND(produto_id);"
Conn.CommandText = queryProdutosRandomicos
Conn.CommandType = 1
Set Conn.ActiveConnection = DataConn
rsProdutosRandomicos.Open Conn, , 1, 3
if rsProdutosRandomicos.recordCount > 0 then
%>
		<div id="destaque-principal">
		  <ul>
<%
	while not rsProdutosRandomicos.eof
%>
			<li><a href="produtos.asp?produto=<%=rsProdutosRandomicos("produto_id")%>"><br />
			  <strong><%=rsProdutosRandomicos("produto_nome")%></strong><br />
			  <small><%=rsProdutosRandomicos("produto_comentario")%></small><br />
			  <span class="precopor"><%= un_moeda & " " & converte_moeda(rsProdutosRandomicos("produto_preco"))%></span></a></li>
<%
	rsProdutosRandomicos.movenext
	Wend
%>
		  </ul>
		</div>
<%
end if
rsProdutosRandomicos.close
%>

Vamos as considerações: Fazendo uma query fora do ASP (utilizei o Aqua Data Studio) e também por dentro do MS Access (Modo de Exibição > Modo SQL) funcionou PERFEITAMENTE. A cada atualização ele me retornava 2 produtos diferentes.

Agora testando essa query pelo ASP com o código acima ele retorna sempre os mesmos resultados!!!

 

Será que alguem poderia me ajudar e dizer se o problema é com o RND() do objeto ADODB.Recordset do ASP ou se é alguma 'caquinha' que eu fiz ali na programação??

 

Sei que tem outra maneira de fazer usando o Randomize do ASP, mas dai fica muitas linhas e tenho que fazer 2 ou 3 queryes pra retornar o que preciso, o que na minha opnião julgo absurdo.

 

Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o order by assim

 

ORDER BY Rnd(Int(Now()*[ID])-Now()*[ID])

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o order by assim

 

ORDER BY Rnd(Int(Now()*[ID])-Now()*[ID])

Valeu pela dica amigo! ele agora retorna registros randômicos, mas ele está ignorando o TOP 2 para alguns casos, e está retornando mais de 2 resultados...

 

 

Já resolvi o problema, converti o sistema todo para MySQL.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trnaquilo

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.