02. december 2004 - 10:55Der er
11 kommentarer og 1 løsning
trække tilfældig data ud af DB der opfylder krav
Hej Eksperter
HAr kørt en online konkurrence hvor folk har svaret A, B eller C i en konkurrence og skrevet deres navn og adresse. Alt dette er nu fyldt i en access database og jeg skal nu trække nogle vindere. Jeg har ikke selv en stand forskid på ASP koden og konkurrencen blev lavet eksternt da jeg var i tidsnød.
Er der nogen der kan hjælpe mig med et script som kigger i databasen "competition" og vælger 1 tilfældig post ud som opfylder kravet om at svarfeltet "7svar" har værdien "C" eller "c" (ved ikke om et script er case-sensitive)
Dette burde virke. Det kræver bare at der er et autonummerfelt på tabellen, og det hedder ID.
<% randomize R=clng(1000000*rnd) strSQL = "SELECT TOP 1 * FROM competition where 7svar='c' or 7svar='C' ORDER BY rnd(-(ID)*" & R & ")" Set rs = objConn.Execute(strSQL) if not rs.eof response.write rs("name") end if %>
strSQL = "SELECT * FROM competition where 7svar='c' or 7svar='C'" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open strSQL , Conn,1, 2 randomize R = clng(rs.RecordCount*rnd)+1 counter = 0 do while not rs.eof and counter < R rs.MoveNext loop if not rs.eof then response.write rs("name") end if
hmm kan ikke rigtig få det til at virke men er som sagt også et fæ til ASP. jeg antager at der skal stå noget mere i asp filen (åbne database etc.)
når jeg prøver det første eksempel rent indsat i filen winner.asp (jeg har et unikt ID felt det hedder bare unique_id istedet) som ser sådan her ud
<% randomize R=clng(1000000*rnd) strSQL = "SELECT TOP 1 * FROM competition where 7svar='c' or 7svar='C' ORDER BY rnd(-(unique_id)*" & R & ")" Set rs = objConn.Execute(strSQL) if not rs.eof response.write rs("name") end if %>
<% strSQL = "SELECT * FROM competition where 7svar='c' or 7svar='C'" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open strSQL , Conn,1, 2 randomize R = clng(rs.RecordCount*rnd)+1 counter = 0 do while not rs.eof and counter < R rs.MoveNext loop if not rs.eof then response.write rs("name") end if %>
får jeg denne fejl:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
script: ----- <% strSQL = "SELECT * FROM competition where 7svar='c' or 7svar='C'" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open strSQL , Conn,1, 2 randomize R = clng(rs.RecordCount*rnd)+1 counter = 0 do while not rs.eof and counter < R counter = counter + 1 rs.MoveNext loop if not rs.eof then response.write rs("name") end if %> ----- Fejl: ----- ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Script: ----- <% randomize R=clng(1000000*rnd) strSQL = "SELECT TOP 1 * FROM competition where 7svar='c' or 7svar='C' ORDER BY rnd(-(unique_id)*" & R & ")" Set rs = objConn.Execute(strSQL) if not rs.eof then response.write rs("name") end if %> ----- fejl: ----- Microsoft VBScript runtime error '800a01a8'
objConn er din database connection. Den skal gerne være noget i denne stil:
set objConn = Server.CreateObject("ADODB.Connection") objConn.open "En tekst som definere databasetilslutning"
hvis du allerede har sådan en, men den hedder noget andet, ændre du bare "objConn" i scriptet til det din hedder. I det andet script har jeg kaldt conectionen "Conn".
hmm umiddelbart vil jeg mene min database connection er denne her: ----- accessdb="testinputdb" cn="DRIVER={Microsoft Access Driver (*.mdb)};" cn=cn & "DBQ=" & server.mappath(accessdb) Set rs = Server.CreateObject("ADODB.Recordset") ----- når jeg sætter det ind får jeg stadig fejlen men selvfølglig bare i linie 10 ;-)
Det er jo klart for jeg har ikke defineret nogen objConn
Da der ikke ser ud til at komme et endegyldigt svar lukker jeg spørgsmålet. Beklager hvis jeg har brugt din tid unødigt fennec.
Synes godt om
Ny brugerNybegynder
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.