Avatar billede running_fast Nybegynder
02. november 2003 - 11:46 Der er 7 kommentarer og
1 løsning

Hente tilfaeldig post ud fra DB

hej,

pt. henter jeg en post ud med denne :
SELECT TOP 1 * FROM billeder WHERE kat = 4

hvordan faar jeg den til at hente en tilfaeldig post istedet (stadig fra kat = 4)
Avatar billede eagleeye Praktikant
02. november 2003 - 11:48 #1
Her er et eksempel på at finde en tilfældig post med Access:

<%

Set rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM tabelnavn"
rs.Open SQL, Conn, 3, 1
rndMax = rs.RecordCount
if rndMax > 0 then
  Randomize 
  rndNumber = Int((RND * rndMax))  'Finder et random nummer
  rs.Move rndNumber 'Flytter til den valgte record

  'Udskriv den tilfældige valgte post her
  Response.Write rs("vis_denne_kolonne")
else
  Response.Write "Ingen poster"
end if
%>
Avatar billede eagleeye Praktikant
02. november 2003 - 11:49 #2
Så den SQL jeg har vist:
SQL = "SELECT * FROM tabelnavn"

Bliver til dette
SQL = "SELECT * FROM billeder WHERE kat = 4"
Avatar billede running_fast Nybegynder
02. november 2003 - 11:55 #3
Problemet er, at jeg henter en thumbnail (incl. link) frem fra mit album, saa det gaar ikke, at vi risikerer at den prover at hente en 'ikke eksisterende' post - og dermed melder "ingen poster" fejl.

Kan man ikke komme uden om det ? Helst uden at skulle opdatere asp-filen hver gang man ligger poster ind i DB'en.
Avatar billede eagleeye Praktikant
02. november 2003 - 11:58 #4
Nej på den måde det lave vil den altid finde en post at vise, undtagen hvis der ikke er nogle poster i kat=4.
Avatar billede running_fast Nybegynder
02. november 2003 - 12:00 #5
tak :)
Avatar billede running_fast Nybegynder
02. november 2003 - 18:55 #6
eagleeye > har du mod paa lidt hjaelp ?

Har skrevet dit svar om til foelgende :

Set RS_MainMessage1 = Connect1.Execute("SELECT * FROM billeder WHERE Kat = 4")
rndMax = RS_MainMessage1.RecordCount

  Randomize 
  rndNumber = Int((RND * rndMax)) 
  RS_MainMessage1.Move rndNumber

n_hits = RS_MainMessage1("hits")
n_hiturl = RS_Mainmessage1("hiturl")
n_wwidth = RS_MainMessage1("wwidth")
n_wheight = RS_MainMessage1("wheight")
n_thumb = RS_MainMessage1("thumb")
n_theight = RS_MainMessage1("theight")
n_des = RS_MainMessage1("Des")
n_dato = RS_MainMessage1("Dato")

Faar fejlen :
Rowset does not support fetching backward.

Connecter med :
<%
Dim Connect1, RS_MainMessage1
Set Connect1 = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/foto.mdb")
Connect1.Open strDSN
%>
Avatar billede eagleeye Praktikant
02. november 2003 - 19:24 #7
Ja du skal bruge recordset .Open metoden:

Sådan denne linje:
Set RS_MainMessage1 = Connect1.Execute("SELECT * FROM billeder WHERE Kat = 4")

Bliver til disse to:

Set RS_MainMessage1 = Server.CreateObject("ADODB.RecordSet")
RS_MainMessage1.Open "SELECT * FROM billeder WHERE Kat = 4", Connect1, 1
Avatar billede running_fast Nybegynder
02. november 2003 - 19:34 #8
Saa virker det ... TAk !!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester