Rasgele Veri Alma [Asp]
-
Veritabanından rastgele kayıt alma olayı randomize ile yapılan sayı atamasının veritabanından karşılığını bulup çağırmaktır. Ama bazı kayıtlar zamanla silinmiş olsa kayıt bulunamadı hatası oluşacak. Bu hatayı almadan tablomuzdan rasgele kayıt nasıl alırız??!
SELECT * FROM tablo ORDER BY newid()
Yukardakini denedim ama Undefined function 'newid' in expression hatası alıyorum. Hata aldığım kodlar aşağıda...
<%
Set rsPost = ObjConn.Execute("SELECT TOP 5 * FROM weblog ORDER BY newid()")
If rsPost.EOF Then
response.Write(""&emptyPosts&"")
Else
while not rsPost.EOF
%><img src="../icons/cube.gif"> <a href="comments.asp?id=<%=rsPost("id")%>"><%=rsPost("headline")%></a><br>
<%
rsPost.Movenext
Wend
rsPost.Close
Set rsPost = Nothing
End If
%> -
<%
set rsPost = ObjConn.Execute("SELECT TOP5 * FROM weblog ORDER BY newid()")
If rsPost.EOF Then
response.Write(""&emptyPosts&"")
Else
while not rsPost.EOF
%>
<a href="comments.asp?id=<%=rsPost("id")%>"><%=rsPost("headline")%></a><br>
<%
rsPost.Movenext
Wend
End IfrsPost.Close
Set rsPost = Nothing
%>şöyle veya
<%
set rsPost = ObjConn.Execute("SELECT TOP5 * FROM weblog ORDER BY newid()")
If rsPost.EOF and rsPost.BOF Then
response.Write(""&emptyPosts&"")
Else
while not rsPost.EOF
%>
<a href="comments.asp?id=<%=rsPost("id")%>"><%=rsPost("headline")%></a><br>
<%
rsPost.Movenext
Wend
End IfrsPost.Close
Set rsPost = Nothing
%>veya direk normal randomize ile almaya çalış
< %
Set vt = Server.CreateObject("ADODB.Connection")
vt.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("veritabani.mdb")
set rs = server.createobject("ADODB.Recordset")
sql = "select top5 * from tablo"
rs.open sql,vt,1,3
Randomize
rastgele = Int((Rnd*Rs.RecordCount)+0)
Rs.Move(rastgele)
Response.write Rs("isim")
%>veya da şu while wend yerine loop vs kullan aklıma başka gelmiyor :/ newid olayına hiç anlamadım zaten görmediğim bişey
-
sanırım accessde çalışmıyor newid olayı sql için geçerli
ben az önce deneme yaptım şöyle bi fonksiyonla hallettim
<%
set rs = server.createobject("ADODB.Recordset")
sql = "select top 5 * from menu order by Rnd(-(1000*id)*Time())"
rs.open sql,baglanti,1,3
while not rs.EOF
%>
<%=rs("adi")%><br/>
<%
rs.Movenext
Wend
rs.Close
Set rs= Nothing
%>
-
teşekkürler pesimistzombie şimdi deniyorum...
