12. august 2007 - 00:54Der er
31 kommentarer og 1 løsning
Lidt problemer med databaseudtræk.
Hej eksperter.
Hehe, kan man på nogen måde gøre det her?
Set rs = Conn.Execute("select top 5 * from user where games => 250 order by answerscorrect / (games * 10) desc")
Jeg er udemærket godt klar over, at ovenstående ikke virker, men kan man lave sådan, at princippet vil virke? Kan lige sige at både answerscorrect og games er tal-værdier.
Jeg prøver at køre koden, men jeg får blot "Siden kan ikke vises". Har ellers slået til sådan at den skal fejlmelde, men ved ikke hvorfor den ikke gør.
ser det her forkert ud?
<% Set conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb") Set rs = Conn.Execute(" SELECT TOP 2 *, answerscorrect / (games * 10) AS rating FROM user WHERE games => 250 ORDER BY rating DESC ") %>
<% do while not rs.eof %>
<% = rs("games") %><br> <% rs.movenext loop %>
Jeg skal lige minde om, at games kan være 0, det vil sige at man egentlig kan komme til at devidere med nul, hvilket jo matematisk set ikke er muligt.
VB Script er ikke vild med at man deler over flere linjer på netop den måde. Det var bare min måde at vise de forskellige komponenter af SQL'en. Den skal se sådan ud i din kode:
<% Set conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb") Set rs = Conn.Execute("SELECT TOP 2 *, answerscorrect / (games * 10) AS rating FROM user WHERE games => 250 ORDER BY rating DESC")%>
Får irriterende nok stadigvæk "Siden kan ikke vises med:
<% Set conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb") Set rs = Conn.Execute("SELECT TOP 2 *, answerscorrect / (games * 10) AS rating FROM user WHERE games => 250 ORDER BY rating") %>
Formålet er netop at afprøve SQL-koden uden at den er viklet ind i en helt masse ASP-kode. På den måde kan man isolere hvor det er at fejlen opstår henne: Er det i ASP-koden eller i SQL-koden?
For at afprøve en SQL-sætning i Access skal du vist oprette en Forespørgsel. Derefter er der et eller andet sted, hvor at du kan skifte til at se denne som SQL. I det vindue kan du indtaste din SQL fra ovenfor og så køre den.
Set rs = Conn.Execute("SELECT TOP 10 *, answerscorrect / (games * 10) AS rating FROM user WHERE games > 100 ORDER BY rating")
Kan man ikke kalde den noget andet end "rating" - det er nemligt lidt uheldigt, da jeg i forvejen har et felt der hedder rating... Det ser ud som om at den sortere efter den i stedet for answerscorrect / (games * 10)
Jo da - "AS rating" definere bare at "rating" er et alias for værdien af "answerscorrect / (games * 10)". Rating var blot mit bud på et passende alias-navn, og du kan sagtens vælge noget helt andet hvis du vil.
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.