Avatar billede cliche Nybegynder
23. oktober 2001 - 17:46 Der er 13 kommentarer og
1 løsning

random fra 3 kolonner

Hvordan kan jeg hive et random felt ud fra 3 kolonner i en tabel....?

Tabellen hedder
random

Kolonnerne hedder
1 og 2 og 3

Jeg kan godt hive det ud men så får jeg alt fra kolonnerne med et bestemt ID :(
help meningen er at data skal hives ud uafhængigt af ID.

Hilfe :)
Avatar billede cyberinet.com Nybegynder
23. oktober 2001 - 17:57 #1
Det her script tæller først antallet af rækker i din database og derefter laver den en randomize og gå så til en random række.

Så skal du bar lige lave en random til(samme princip) som vælger hvilken kolonne det skal være.

Håber du forstår.

<%
Sql = \"Select count(*) as Found from Users\"
Set Record =  Rs.Execute(Sql)

Ialt = Record(\"found\")

Randomize
RandNum = Int(Rnd * Ialt) + 1
Record.MoveFirst
For i = 1 to RandNum - 1
  Record.MoveNext
next
%>
Avatar billede cliche Nybegynder
23. oktober 2001 - 18:08 #2
smadre lige nogen flere point på for et fuldt eksempel :)
Avatar billede eagleeye Praktikant
24. oktober 2001 - 08:47 #3
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.mappath(\"data.mdb\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")

randomize
kolNo = Int(rnd*(3-1))+1

strSQL = \"SELECT * FROM random;\"
rs.Open strSQL, Conn, 3, 1
rndMax = CInt(rs.RecordCount)

if rndMax > 0 then
  Randomize
  rndNumber = Int((RND * rndMax))    \'Find et random nummer
  rs.Move rndNumber    \'Flyt til den første valgte record

  Response.Write rs(\"\" & kolNo)  \'udskriver her fra kolonne 1,2 eller 3
end if
rs.Close
Set Conn = Nothing
%>
Avatar billede cliche Nybegynder
24. oktober 2001 - 12:53 #4
eagleeye :) Den skal finde et ord fra hver kolonne, og randomize dem, sådan så den ikke hiver 3 ord ud, med samme ID altså noget ala sådan her


ID | 1 | 2 | 3 |
1  to  en  bi
2  si  ko  øl
3  yo  cd 
4      rs

Sådan så at outputtet vil være noget ala

si cd bi

:)
Avatar billede cliche Nybegynder
24. oktober 2001 - 12:53 #5
hmm håber du kan se ideen, formateringen af det der ovenover er ikke for fed
Avatar billede eagleeye Praktikant
24. oktober 2001 - 17:30 #6


<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.mappath(\"dbfil.mdb\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")

strSQL = \"SELECT count(1) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"1\")

strSQL = \"SELECT count(2) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"2\")

strSQL = \"SELECT count(3) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"3\")

Set Conn = Nothing
%>
Avatar billede cliche Nybegynder
24. oktober 2001 - 22:53 #7
Lige det sidste spørgsmål, den tager posterne fra samme ID det skal den ikke :(
Og hvis der lad os sige er 50 poster i kolonne 1
30 i 2 og 40 i 3 , så hvis scriptet vælger post 39 får man kun 2 poster :( HELP det sidste
Avatar billede cliche Nybegynder
24. oktober 2001 - 22:53 #8
Avatar billede eagleeye Praktikant
24. oktober 2001 - 22:56 #9
underligt den vægler fint 3 forskellige ID\'s i min test fil.
kikker lige på det igen
Avatar billede eagleeye Praktikant
24. oktober 2001 - 22:59 #10
jeg kan dog godt lave det sidste problem du beskriver
Avatar billede eagleeye Praktikant
24. oktober 2001 - 23:01 #11
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.mappath(\"dbfil.mdb\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")

strSQL = \"SELECT count([1]) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"1\")

strSQL = \"SELECT count([2]) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"2\")

strSQL = \"SELECT count([3]) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"3\")

Set Conn = Nothing
%>



hvis du ikke vil lave dine kolonne navne om kan man lave det i en for løkke...
for i = 1 to 3
...
next
??
Avatar billede eagleeye Praktikant
24. oktober 2001 - 23:03 #12
her er eks med for i=1 to 3

for i = 1 to 3
  strSQL = \"SELECT count([\"&i&\"]) as antal FROM random;\"
  set rs = conn.execute(strSQL)
  randomize
  rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
  strSQL = \"SELECT * FROM random;\"
  set rs = conn.execute(strSQL)
  rs.move rndNumber
  response.write rs(\"\"&i)
next
Avatar billede eagleeye Praktikant
24. oktober 2001 - 23:05 #13
Denne her hendter du data fra den kolonne som man er kommet til:

for i = 1 to 3
  strSQL = \"SELECT count([\"&i&\"]) as antal FROM random;\"
  set rs = conn.execute(strSQL)
  randomize timer
  rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
  strSQL = \"SELECT [\"&i&\"] FROM random;\"
  set rs = conn.execute(strSQL)
  rs.move rndNumber
  response.write rs(\"\"&i)
next
Avatar billede cliche Nybegynder
24. oktober 2001 - 23:09 #14
eagleeye, nu virker det med den her

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.mappath(\"dbfil.mdb\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")

strSQL = \"SELECT count([1]) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"1\")

strSQL = \"SELECT count([2]) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"2\")

strSQL = \"SELECT count([3]) as antal FROM random;\"
set rs = conn.execute(strSQL)
randomize
rndNumber = Int(RND * rs(\"antal\")) \'Find et random nummer
strSQL = \"SELECT * FROM random;\"
set rs = conn.execute(strSQL)
rs.move rndNumber
response.write rs(\"3\")

Set Conn = Nothing
%>

Så jeg takker for indsatsen :9
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