Hra en lite fundering. Jag har en artikel/text sparad i ett PM fält i min Access databas och vill lista ut detta på sidan, MEN sidan ska ej vara scrollbar och är relativt begränsad i bredd, så jag kanske bara kan ta ut ex 1000 tecken per sida men texten kanske är typ 3000 tecken lång. Hej,Paging ej recordset?
Så vad jag vill (tror jag) är en paging funktion fast för själva datan inte flera recordset. Har lite funderingar att använda Arrayer men ... Någon som har en idé Sv: Paging ej recordset?
För att lösa detta så har du redan bestämt förutsättningen. Du visar en del av ett dokument. När du hämtar ut en blob (i detta fall ett memofält) så vet du längden på hela textmassan. Den är:
<code>
Length = Len(MinBlob)
</code>
Säg att den är 42800 tecken lång. Du har även bestäm att 10.000 tecken skall visas åt gången och då kan du också få reda på hur många virtuella sidor det kan tänkas bli.
<code>
Pages = Length/10000
</code>
Är det 42000 tecken så kommer det bli 4,2. För att få till ett heltal så får du använda int-kommandot så det blir 5, eftersom det skall vara mer än 4.
<code>
Pages = Int(Length/10000)
</code>
Nu har du kommit så långt att du faktiskt kan bestämma vilken sektion du vill visa. Som du säkert vet så används MID-funktionen för att läsa ett bestämt antal tecken. Vill du har från 10001-20000 så skriver du:
<code>
ThisPage = Mid(MinBlob, 10001, 10000)
</code>
Men du vill istället skicka in en sidangivelse och då får vi ta reda på vad sida 1,2,3,4 och 5 är. Dvs:
<code>
Page = 1
StartPos = Page * 10000
</code>
Om page är 1 så börjar den läsa på 10.000 så därför bör du även använda Page 0 som den absolut första sidan eftersom 0 * 10000 är 0.
Så om du nu i din url råkar skicka med test.asp?page=2 så kanske du kan börja med något i stil med:
<code>
MyPage = Request.QueryString("page")
If MyPage = "" Then MyPage = 0
Set Rst = Con.Execute("Hämta fältet jag skall använda")
If Not Rst.Eof Then
MyBlob = Rst("MyPage")
MaxPages = Int(Len(MyBlob)/10000)
End If
Rst.Close
If MaxPages > 0 and len(MyBlob) > 0 Then
If MyPage <= MaxPages Then
Pagestart = MyPage * 10000
CurrentPage = Mid(MyBlob, PageStart, 10000)
Else
' finns inte så många sidor som du angett
End If
Else
' vi har tyvärr inga sidor att visa
End If
Response.Write CurrentPage
</code>
Nu är detta bara ett utkast och kommer säkerligen inte fungera på första försöket men jag hoppas att detta är en teknik som kanske hjälper dig vidare. Lycka till