Avatar billede zantiago Nybegynder
01. januar 2003 - 22:16 Der er 11 kommentarer og
1 løsning

Random function til konkurrencer og lign.

Hej Eksperter!

Jeg vil gerne lave en udtrækning fra min database - Det skal bare forskelligt hvem der kommer ud..

F.eks:
Udtræk en person der har svaret 4

Der er måske 10 personer der har svaret 4, og hver gang du trykker på knappen - kommer der en tilfældig person ud med det rigtige svar..

Håber i kan hjælpe

/Bruhn
Avatar billede zantiago Nybegynder
01. januar 2003 - 22:55 #2
Prøver dette:
<%
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open ("SELECT * FROM [users] WHERE ID = ("&_
    "SELECT Min(ID) FROM Tabel WHERE ID >= (" &_
    "SELECT Round(CDbl(" & Replace(Rnd(),",",".") &_
    "*Max(ID))) FROM [users]))")
%>
<%=RS("firstname")%>


Men får følgende fejl:

ADODB.Recordset error '800a0e7d'
Unknown runtime error

/default.asp, line 1550
Avatar billede zantiago Nybegynder
01. januar 2003 - 22:57 #3
Her kommer lige den rigtige... UPS!!

<%
Randomize Timer

Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open ("SELECT * FROM [users] WHERE ID = ("&_
    "SELECT Min(ID) FROM [users] WHERE ID >= (" &_
    "SELECT Round(CDbl(" & Replace(Rnd(),",",".") &_
    "*Max(ID))) FROM [users]))")
%>
<%=RS("firstname")%>
Avatar billede zantiago Nybegynder
01. januar 2003 - 22:58 #4
Stadig med samme fejl..
Avatar billede medions Nybegynder
01. januar 2003 - 23:01 #5
Hvilken database bruger du?

//>Rune
Avatar billede medions Nybegynder
01. januar 2003 - 23:03 #6
Hvis det er en Access db du bruger så prøv med dette:

<%
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("dindatabase.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Sql = "Select count(*) as Found from [dintabell]"
Set Record =  myConn.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from [dintabell]"
Set Record =  myconn.Execute(Sql)
Randomize
RandNum = Int(Rnd * Ialt) + 1
Record.MoveFirst
For i = 1 to RandNum - 1
    Record.MoveNext()
next

myConn.Close
Set myConn = Nothing
%>

//>Rune
Avatar billede eagleeye Praktikant
01. januar 2003 - 23:08 #7
Hej du må for alt i verden ikke bruger dette styk kode http://activedeveloper.dk/aspdigital/2002010201.asp da det giver et usymetrisk udfald. Hvilket betyder der er lige stor chance for alle for at vinde. Altså der er nogle som har størrer sansynlighed for at vinde.


Brug dette hvor du først har en SQL som finde de folk som er vindere med en WHERE del og så vælges et tilfældit tal så kan du hendte oplysninger omkrng person ved hjælp af det unikke ID som en person forhåbenligt har i tabellen:


<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db5.mdb")

SQL = "SELECT id FROM tabel WHERE kolonnne = 'vinder'"
set rs = Conn.Execute(SQL)
do while not rs.EOF
  idlist = idlist & "," & rs("id")
  rs.movenext
loop
idlist = mid(idlist,2) 'Fjerner første ,
idarr = Split(idlist,",")
randomize
vinderID = idarr(Int(rnd * (Ubound(idarr)+1)))

Response.Write "Vinder ID er : " & vinderID

'Lav en SQL som hendter data omkring brugeren her så

SQL = "SELECT * FROM tabel WHERE id = " & vinderID
set rs = Conn.Execute(SQL)
'Udskriv data

Conn.Close
Set Conn = Nothing
%>
Avatar billede zantiago Nybegynder
01. januar 2003 - 23:09 #8
Ja ok - Men hvordan udskriver jeg resultatet?
Avatar billede eagleeye Praktikant
01. januar 2003 - 23:09 #9
doh... Der skal stå

Hvilket betyder der IKKE er lige stor chance for alle for at vinde. Altså der er nogle som har størrer sansynlighed for at vinde.
Avatar billede medions Nybegynder
01. januar 2003 - 23:11 #10
<%
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("dindatabase.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Sql = "Select count(*) as Found from [dintabell]"
Set Record =  myConn.Execute(Sql)
Ialt = Record("found")
Sql = "Select * from [dintabell]"
Set Record =  myconn.Execute(Sql)
Randomize
RandNum = Int(Rnd * Ialt) + 1
Record.MoveFirst
For i = 1 to RandNum - 1
    Record.MoveNext()
next

Response.Write(Record("Feltnavn"))

myConn.Close
Set myConn = Nothing
%>

//>Rune
Avatar billede zantiago Nybegynder
01. januar 2003 - 23:11 #11
Ok tak.. Tester lige
Avatar billede zantiago Nybegynder
01. januar 2003 - 23:17 #12
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.

/default.asp, line 1551

[ /default.asp, line 1551  = set rs = MyConn.Execute(SQL) ]
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