Använder följande paging på min länksida, och det fungerar hur bra som helst. Detta verkar vara en klurigfråga ju.. ställde samma fråga på Aspsidan, och inte heller där verkar någon kunna hjälpa mig =(. Det kanske inte går att göra så helt enkelt? Nån som vet? HJÄLP!!! JAg tror du kan lösa det så här: Nu fungerar första sidan, men när man skall gå vidare blir det galet. Den sidan finns inte!! Om du läser andreas exempel så har han inte tagit med någon referens till nån sida, utan den får du bygga själv. Response.Write "Next page" Lite grundläggande om URI: Hmm... tror inte det är det som är felet (säger jag som är nybörjare!!!) Tanke fel av mig. Min kod förutsatte stigande datum ordning. Med andra ord minsta värdet först. Jag förstår inte varför du föreslår att tabort Server.URLEncode()? Detta måste ha varit ett hastigt genomtänkt förslag. Då jag vet att du är en mycket bra programmerare. ;o) Nu verkar det fungera... eller i alla fall nästan. Som sagt var: På varje sida skall det visas alla poster från två dagar, och det gör det nu också. Problemet nu är att länken till nästa sida blir på det sissta datumet på sidan innan. <code> Nu fungerar det ännu sämre! Länken bli precis som förrut, men sidan man kommer till har ett felmeddelande: Opps... Slarvfel av mig...Paging
<code>
<!-- #include virtual="adovbs.inc" -->
<%
file = Server.MapPath("../databas.mdb")
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& file
Set RecSet = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM linkz where visa=True and (not (kategori=33)) and (not (kategori=34)) and datum<=Date() ORDER BY Datum desc, ID Desc"
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
RecSet.pagesize = 10
sida = Request.QueryString("sida")
If sida = "" then sida = 1
if RecSet.EOF then
Response.write "Det finns inga poster att hämta i databasen"
Else
RecSet.AbsolutePage = sida
If sida = 1 then
Response.write "Äldre ->"
ElseIf (Int(totalPages)) = (Int(sida)) then
Response.write "<- Nyare"
Else
Response.write "<- Nyare"
Response.write "Äldre ->"
End If
response.write"<font size=5><b>Senaste länkarna</b></font><br>"
response.write "<br>"
Do until RecSet.EOF or fldcounter = RecSet.pagesize
fldcounter = fldcounter + 1
Set RecSet2 = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM kat WHERE id = "& Recset("kategori") &" "
RecSet2.Open SQL, Conn%>
<%strLink=RecSet("link")%>
<%If strLink<>"" Then%>
<!-- #include file="lankarna.asp"-->
<%
set recset2=nothing
RecSet.MoveNext
Loop
End If
End If%>
</code>
I ett tidigare inlägg fick jag hjälp med att fixa så att det visas de senaste två dagarnas inlägg med hjälp av följande sql-sats:
<code>
SQL = "SELECT linkz.*" & vbCrLf & _
"FROM linkz" & vbCrLf & _
"WHERE linkz.Visa AND NOT linkz.kategori IN (33, 34) and linkz.datum IN (SELECT TOP 2 linkz.datum" & vbCrLf & _
" FROM linkz where datum<=date()" & vbCrLf & _
" GROUP BY linkz.datum ORDER BY linkz.datum DESC)" & vbCrLf & _
"ORDER BY linkz.datum DESC, linkz.id DESC"
</code>
Kan man på något sätt, och i så fall hur, bygga in den i pagingen så att det visas 2 dagar per sida? Hoppas ni förstår och att någon kan hjälpa mig!Sv: Paging
Sv: Paging
<code>
MyDate = Trim(Request.QueryString("date"))
If IsDate(MyDate) Then
MyDate = CDate(MyDate)
If MyDate > Date() Then
MyDate = Date()
End If
Else
MyDate = Date()
End If
strSQL = "SELECT linkz.*" & vbCrLf & _
"FROM linkz" & vbCrLf & _
"WHERE linkz.Visa AND NOT linkz.kategori IN (33, 34) and linkz.datum IN (SELECT TOP 2 linkz.datum" & vbCrLf & _
" FROM linkz where datum<=#" & MyDate & "#" & vbCrLf & _
" GROUP BY linkz.datum ORDER BY linkz.datum DESC)" & vbCrLf & _
"ORDER BY linkz.datum DESC, linkz.id DESC"
rs.Open strSQL, con
If rs.EOF Then
Response.Write "Inga mer poster"
Else
Response.Write "Next page"
Do
'osv...
rs.MoveNext
Loop Until rs.EOF
End If
rs.Close
</code>Sv: Paging
Sv: Paging
Sv: Paging
Genom att utelämna adressen till en sida utgår den från aktuellsida. Den kommer lägga på frågesträngen.
Det är bara att testa själv:
<code>
<html>
<head>
<title>Ny sida 1</title>
</head>
<body>
A
B
C
</body>
</html>
</code>
Du slipper då hålla reda på sidans namn och/eller sökväg. Sv: Paging
Men jag har etstat med följande:
Response.Write "Next page"
och av det bildas då länken linkz.asp?do=sida&date=2004%2D06%2D01 altså med dagens datum. När jag provade att i min webläsare ändra datumet manuellt så kom jag till sidan med det datumet. Kanske har jag missupfattat allt nu, men... Hoppas ni förstår vad jag menar. Annars kanske ni kan kolla http://www.dopyworld.com/nya/linkz.asp?do=sida där jag lagt ut en testsida.Sv: Paging
Jag har korrigerrat det i följande exempel:
<code>
Dim MyDate
Dim LastDate
MyDate = Trim(Request.QueryString("date"))
If IsDate(MyDate) Then
MyDate = CDate(MyDate)
If MyDate > Date() Then
MyDate = Date()
End If
Else
MyDate = Date()
End If
strSQL = "SELECT linkz.*" & vbCrLf & _
"FROM linkz" & vbCrLf & _
"WHERE linkz.Visa AND NOT linkz.kategori IN (33, 34) and linkz.datum IN (SELECT TOP 2 linkz.datum" & vbCrLf & _
" FROM linkz where datum<=#" & MyDate & "#" & vbCrLf & _
" GROUP BY linkz.datum ORDER BY linkz.datum DESC)" & vbCrLf & _
"ORDER BY linkz.datum DESC, linkz.id DESC"
rs.Open strSQL, con
If rs.EOF Then
Response.Write "Inga mer poster"
Else
Do
'osv...
LastDate = rs("Date") 'Ny rad
rs.MoveNext
Loop Until rs.EOF
Response.Write "Next page"
End If
rs.Close
</code>
Detta bör få koden att fungera. ;o)Sv: Paging
Om du har en bakomliggande anledning vill jag gärna att du berätar den.Sv: Paging
Tillexempel sida 1:
2004-06-02
Länk1
Länk2
2004-05-30
Länk1
Länk2
Länk3
Nästa sida (Länken går då alltså till sidan med datumen 2004-05-30, vilket innebär att sidan kommer börja med det datumet.
2004-05-30
Länk1
Länk2
Länk3
2004-05-29
Länk1
Och så vidare. Hoppas ni förstår. Har provat ändra massa men får ingen ordning på det. Kolla in http://www.dopyworld.com/nya/linkz.asp?do=sida så förstår ni säkert vad jag menar.Sv: Paging
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "#" & Year(Value) & "-" & Right("0" & Month(Value), 2) & "-" & Right("0" & Day(Value), 2) & "#"
Else
SQLDate = "Null"
End If
End Function
Dim rs
Dim con
Dim strSQL
Dim MyDate
Dim LastDate
Set con = Server.CreateObject("ADODB.Connection")
con.Open ""
strSQL = "SELECT linkz.*" & vbCrLf & _
"FROM linkz" & vbCrLf & _
"WHERE linkz.Visa AND NOT linkz.kategori IN (33, 34) and linkz.datum IN (SELECT TOP 2 linkz.datum" & vbCrLf & _
" FROM linkz" & vbCrLf & _
" WHERE datum<=Date()" & vbCrLf & _
" GROUP BY linkz.datum" & vbCrLf & _
" ORDER BY linkz.datum DESC)" & vbCrLf & _
"ORDER BY linkz.datum DESC, linkz.id DESC"
MyDate = Trim(Request.QueryString("date"))
If IsDate(MyDate) Then
MyDate = CDate(MyDate)
If MyDate < Date() Then
strSQL = "SELECT linkz.*" & vbCrLf & _
"FROM linkz" & vbCrLf & _
"WHERE linkz.Visa AND NOT linkz.kategori IN (33, 34) and linkz.datum IN (SELECT TOP 2 linkz.datum" & vbCrLf & _
" FROM linkz" & vbCrLf & _
" WHERE datum<#" & SQLDate(MyDate) & "#" & vbCrLf & _
" GROUP BY linkz.datum" & vbCrLf & _
" ORDER BY linkz.datum DESC)" & vbCrLf & _
"ORDER BY linkz.datum DESC, linkz.id DESC"
End If
End If
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, con
If rs.EOF Then
Response.Write "Inga mer poster"
Else
Do
'osv...
LastDate = rs("Date")
rs.MoveNext
Loop Until rs.EOF
Response.Write "Next page"
End If
rs.Close
Set rs = Nothing
con.Close
Set con = Nothing
</code>Sv: Paging
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error. in query expression 'linkz.Visa AND NOT linkz.kategori IN (33, 34) and linkz.datum IN (SELECT TOP 2 linkz.datum FROM linkz WHERE datum<##2004-05-30## GROUP BY linkz.datum ORDER BY linkz.datum DESC)'.
På raden
rs.Open strSQL, conSv: Paging
SQLDate() funktionen lägger till egna #-tecken. Så plocka bort #-tecken från SQL stasen.
<code>
strSQL = "SELECT linkz.*" & vbCrLf & _
"FROM linkz" & vbCrLf & _
"WHERE linkz.Visa AND NOT linkz.kategori IN (33, 34) and linkz.datum IN (SELECT TOP 2 linkz.datum" & vbCrLf & _
" FROM linkz" & vbCrLf & _
" WHERE datum<" & SQLDate(MyDate) & vbCrLf & _
" GROUP BY linkz.datum" & vbCrLf & _
" ORDER BY linkz.datum DESC)" & vbCrLf & _
"ORDER BY linkz.datum DESC, linkz.id DESC"
</code>
Jag tycker detta felet är lättlöst. Vilket tyder på att du inte satt dig in i hur koden fungerar och/eller inte försökt lösa det själv.
Om du villa programmera så skall du du främst försöka lösa dina problem på egen hand.
Om du har försökt göra det så är du förlåten. Annars så får du en bock i kanten... ;o)