17. juni 2012 - 09:50
Der er
10 kommentarer og 1 løsning
Udtræk fra database
Sidder og roder med hjemmesiden til jobbet og Nyhed's delen. På vores forside kan man se 5 seneste/nyeste Nyheder. Men vil gerne lave et Arkiv over alle nyhederne, og jeg kunne naturligvis bare trække alle nyhederne ud der, MEN jeg kunne godt tænke mig at den trak alle nyhederne ud, pånær de 5 nyeste, som jo ér på forsiden. Kan det lade sig gøre? Skriver i ASP. og bruger Access.
Annonceindlæg fra Publicis Sapient
Hvorfor ikke lade din SQL hente alle, men saa lade din kode skipe de foerste 5?
Jamen det var også i koden at jeg tænkte man kunne lave noget :) Men jeg ved ikke hvordan udtrækket så skal se ud. <% Set cn = Server.CreateObject("ADODB.Connection") cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("db/database.mdb") Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * "pånær seneste 5 nyeste" FROM nyheder ORDER BY ID DESC", cn do while not rs.eof %> Hvis bare det var så let :)
Kan du ikke lave et eller med en counter... Dim count as Integer Set cn = Server.CreateObject("ADODB.Connection") cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("db/database.mdb") Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM nyheder ORDER BY ID DESC", cn do count = count+1 If count < "6" Then Response.Write "" Else Response.Write rs("dine poster") End If rs.MoveNext while not rs.eof
@Fuldstop Når jeg prøve det, så får jeg følgende fejl: Microsoft VBScript compilation error '800a0401' Expected end of statement /nyheder_test.asp, line 108 Dim count As Integer ----------^ nyheder.asp <% Dim count As Integer Set cn = Server.CreateObject("ADODB.Connection") cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("db/database.mdb") Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM nyheder ORDER BY ID DESC", cn do count = count+1 If count < "6" Then Response.Write "" Else Response.Write "<b> " + rs("overskrift") + " </b><br><br> " + FormatStr(rs.form("besked")) + " <br><br>" End If rs.MoveNext while not rs.eof %> <% rs.MoveNext Loop rs.close cn.close %>
Arne_v Ah ok.. tak. Nu får jeg så følgende fejl: Microsoft VBScript compilation error '800a040e' 'loop' without 'do' /nyheder_test.asp, line 132 Loop ^ Jeg tænker at det så er dette der er forkert? Måden jeg afslutter? <% rs.MoveNext Loop rs.close cn.close %>
I VBA og VB6 kan du bruge: Dim count As Integer men i VBS og ASP/VBS skal du bruge: Dim count
<% Dim count Set cn = Server.CreateObject("ADODB.Connection") cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("db/database.mdb") Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM nyheder ORDER BY ID DESC", cn do count = count+1 If count < "6" Then Response.Write "" Else Response.Write "<b> " + rs("overskrift") + " </b><br><br> " + FormatStr(rs.form("besked")) + " <br><br>" End If rs.MoveNext Loop While Not rs.EOF rs.close Set rs = Nothing cn.close Set cn = Nothing
Så skete der noget :) Men den gør noget underligt, synes jeg. Jeg har en DB med 20 poster i, og den trækker 16 15 14 13 12 ud. <% Dim count Set cn = Server.CreateObject("ADODB.Connection") cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("db/database_test.mdb") Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM nyheder_test ORDER BY ID desc", cn do count = count+1 If count < "5" Then Response.Write "" Else Response.Write " " + rs("overskrift") + " <br><br> " End If rs.MoveNext Loop While Not rs.EOF rs.close Set rs = Nothing cn.close Set cn = Nothing %> Meninge er at den skal trække alle poster ud, pånær de nyeste 5 i databasen.
fjern lige " " omkring 5 If count < 5 Then
18. juni 2012 - 20:59
#10
Så virkede det jo sørme efter jeg fjernede de to "" - og ændrede <5 til <6. Nu trækker den 15 poster ud, 1->15 ud af 20 poster. Perfekt. Tusinde tak for hjælpen.. også til dig Arne_v Smid et svar fuldstop :)
18. juni 2012 - 21:10
#11
:) Så lidt.
Kurser inden for grundlæggende programmering