Avatar billede -jacob- Nybegynder
26. juni 2002 - 21:04 Der er 17 kommentarer og
1 løsning

Pagingproblem både i den ene og anden retning

Yo hér dér!

Mit problem går ud på at jeg skal have udskrevet alt fra en tabel i en db...hvilket heller ikke er svært.
Men der skal vises tre output på hvér linie, hvorefter den så skal begynde på en ny linie. Og samtidig må der maks vises 30 output pr. side, før den skal begynde på en ny side.

Håber der er nogle der kan bidrage med en løsning til mit problem.

//Jacob
Avatar billede torbenmelander Nybegynder
26. juni 2002 - 21:09 #1
http://activedeveloper.dk/locator.asp?guid=001000000031

Du kan bruge denne kode hvor du på hver side udskriver 30 poster fra dit recordset...

Så kan du jo evt. lave en variable der er lig med 0 og så plusse med 1 for hver gang du kommer i gennem løkken der udskriver poster. Så tjekker du om den er lig med 3 og hvis den er det indsætter du et <br> og sætter variablen lig med 0 igen ...
Avatar billede md_craig Nybegynder
26. juni 2002 - 21:16 #2
Det med at udskrive, flere poster på en linie kan du se her... i et af mine tidligere spm...

http://www.eksperten.dk/spm/219319

og med hensyn til paging... skal du bruge det torbenmelander har givet dig...
Avatar billede -jacob- Nybegynder
26. juni 2002 - 21:17 #3
Torben:
Den har jeg allerede brugt, men nej. Kunne skisme ikke finde ud af det, så derfor måtte jeg prøve her.

//Jacob
Avatar billede eagleeye Praktikant
26. juni 2002 - 21:32 #4
Jeg kan prøve at uddybe dette eks (http://activedeveloper.dk/aspdigital/kapitel2/paging.asp) lidt:

Du har sikkert din egen SQL-sætning som du bruger til at søge med så den udskrifter du bare den fra ekeemplet:
strSQL = "SELECT LinkURL FROM Links"
med dig egen:
strSQL = DIN SSQL SÆTNING


Så angiver du hvor mange du vil havde på hver side i linier, 10->30:
    rs.PageSize = 10


Ud skrivning af søge resultet skal gøres inde i det loop der er:
    Do While Not rs.EOF And intRecCount > 0
        Response.Write rs("LinkURL") & "<br>"
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop

Du har sikkert et tilsvarne loop som du udskriver søgeresultatet i idag så du udskirve denne linie:
        Response.Write rs("LinkURL") & "<br>"
Men alle de linier du måtte hvade behov for...



Dette kode laver en liste i bunde med Gå til side 1 2 3 4 osv:
Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
    Response.Write "<a href=paging.asp?page=" & intNum & ">" & intNum & "</a> "
Next


Dette kode lave en links til forrige side via truk på <<:
Response.Write "<p>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=paging.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
    Response.Write "&lt;&lt;"
End If


Dette kode lave en links til næste side via tryk på >>:
If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=paging.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
    Response.Write "&gt;&gt;"
End If


Jeg håber det giver lidt ekstra hjælp ellers så bare spørg igen.
Avatar billede -jacob- Nybegynder
27. juni 2002 - 18:52 #5
Nu har jeg prøvet mig lidt frem og tilbage, og det eneste den vil vise er fejl.

Ingen der kan bidrange med en komplet kode??

//Jacob
Avatar billede eagleeye Praktikant
27. juni 2002 - 19:32 #6
Det er sådan set komplet kode du skal ændre en SQL-sætning og du skal ændre hvor mange du vil havde vist pr side.

Denne linie: Response.Write rs("LinkURL") & "<br>"
Skal erstattes af dine kolonner som du vil havde udskrevet.

hvis du vil lave en table kan det være:


  response.write "<table>"
  Do While Not rs.EOF And intRecCount > 0
    response.write "<tr>" 
    response.write "<td>"& rs("kolonne1") &"</td>"
    response.write "<td>"& rs("kolonne2") &"</td>"
    response.write "<td>"& rs("kolonne3") &"</td>"
    response.write "</tr>"
    intRecCount = intRecCount - 1
    rs.MoveNext
  Loop
  response.write  "</table>"
Avatar billede -jacob- Nybegynder
27. juni 2002 - 19:55 #7
eagleeye:

Vi nærmere os noget vi kan bruge til noget ;o) Men!

I stedet for at jeg har tre kolonner, så har jeg een(!) kolonnen som skal fordeles ud.

//Jacob
Avatar billede eagleeye Praktikant
27. juni 2002 - 20:03 #8
Du har en som bare skal vises under hinanden eller?
Avatar billede -jacob- Nybegynder
27. juni 2002 - 20:07 #9
eagleeye:

Citat:
Men der skal vises tre output på hvér linie, hvorefter den så skal begynde på en ny linie. Og samtidig må der maks vises 30 output pr. side, før den skal begynde på en ny side.

Det kan måske miss...forståes, sådan som du nok har gjort ;) Men det er en kolonne som skal vises tre gange på hvér linie.

//Jacob
Avatar billede eagleeye Praktikant
27. juni 2002 - 20:14 #10
Ok altså lige for en sikkerhedsskyld spørger jeg..: Data fra samme kolonne, ok, og så vil du havde resultatet sådan her:
[1][2][3]
[4][5][6]
  ...
[][ ][30]
Er det rigtigt forstået ?
Avatar billede eagleeye Praktikant
27. juni 2002 - 20:22 #11
Hvis det er rigtigt forstået, så kan det gøres sådan her, du kan rette max_pr_row hvis du ønskr et andet antal end 3 pr linie:

max_pr_row = 3 'Max antal kolonner pr række
no_pr_row = 0 'Tæller som bruges til at tælle antal kolonner pr række
response.write "<table>"
Do While Not rs.EOF And intRecCount > 0
  if no_pr_row = 0 then
    response.write "<tr>"
  end if
  response.write "<td>"& rs("kolonne1") &"</td>"
  no_pr_row = no_pr_row + 1
  if no_pr_row = max_pr_row then
    no_pr_row = 0
    response.write "</tr>"
  end if
  intRecCount = intRecCount - 1
  rs.MoveNext
Loop
if no_pr_row > 0 then
  response.write "</tr>"
end if
response.write  "</table>"
Avatar billede -jacob- Nybegynder
27. juni 2002 - 20:48 #12
eagleeye:

Sådan hér dér. Nu virker det præcis som det skulle :) Men! Når jeg racer frem til den sidste side, udskriver den følgende fejl:

-- start --
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record
-- slut --

Kan du også hjælpe med dette problem??

//Jacob
Avatar billede eagleeye Praktikant
27. juni 2002 - 20:54 #13
Inden du sætter dinne:
  rs.PageSize = 10

Skal du tjekke på om rs er tomt

if not rs.EOF then
  rs.PageSize = 10
 
end if

men er det i den linie?
Avatar billede -jacob- Nybegynder
27. juni 2002 - 21:00 #14
eagleeye:

Følgende kode bruger jeg til at tjekke om rs er tom:
If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 30

Og alligevel skriver den at fejlen ligger i:
    rs.MoveNext

Vil du evt. se hele min kode??

//Jacob
Avatar billede eagleeye Praktikant
27. juni 2002 - 23:36 #15
ja det er nok nødvendigt...
Avatar billede -jacob- Nybegynder
27. juni 2002 - 23:43 #16
eagleeye:

Det er måske dumt at skrive hele koden her, men nu gør jeg det alligevel ;)

<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM " & Request.Querystring("urlpage") & " WHERE ([Underkategori] Like '" & Request.Querystring("underkategori") & "')"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("bareetellerandet/tjaeh.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 30
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
    Do While Not rs.EOF And intRecCount > 0

max_pr_row = 3 'Max antal kolonner pr række
no_pr_row = 0 'Tæller som bruges til at tælle antal kolonner pr række
response.write "<table>"
Do While Not rs.EOF And intRecCount > 0
  if no_pr_row = 0 then
    response.write "<tr>"
  end if
  response.write "<td><img src=""" & Request.Querystring("urlpage") & "/" & Request.Querystring("underkategori") & "/" & rs("ImgPath") & """ width=""100"" height=""100"" border=""0""></td>"
  no_pr_row = no_pr_row + 1
  if no_pr_row = max_pr_row then
    no_pr_row = 0
    response.write "</tr>"
  end if
  intRecCount = intRecCount - 1
  rs.MoveNext
Loop
if no_pr_row > 0 then
  response.write "</tr>"
end if
response.write  "</table>"

    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
End If
rs.Close
Set rs = Nothing

Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
    Response.Write "<a href=udskriv.asp?action=view&urlpage=" & Request.Querystring("urlpage") & "&underkategori=" & Request.Querystring("underkategori") & "&page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<p>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=udskriv.asp?action=view&urlpage=" & Request.Querystring("urlpage") & "&underkategori=" & Request.Querystring("underkategori") & "&page=" & intPage - 1 & ">&lt;&lt;</a>"
Else
    Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then
    Response.Write "<a href=udskriv.asp?action=view&urlpage=" & Request.Querystring("urlpage") & "&underkategori=" & Request.Querystring("underkategori") & "&page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
    Response.Write "&gt;&gt;"
End If
%>

Sengetid for en øhh aktiv DJ, hehe

Sleep well

//Jacob
Avatar billede eagleeye Praktikant
27. juni 2002 - 23:51 #17
Det ser ud som om du har fået et ekstra do loop omkring selv det  do loop som udskriver, her er en linie som skal slettes:

If Not (rs.BOF Or rs.EOF) Then
    rs.PageSize = 30
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
    Do While Not rs.EOF And intRecCount > 0      '<---- Slet denne linie


Og herned igen skal der slettes lidt. Slet de 3 markeret linier:

Loop
if no_pr_row > 0 then
  response.write "</tr>"
end if
response.write  "</table>"

    intRecCount = intRecCount - 1    '<---- Slet denne linie
    rs.MoveNext                    '<---- Slet denne linie
    Loop                            '<---- Slet denne linie
End If
rs.Close
Avatar billede -jacob- Nybegynder
28. juni 2002 - 00:00 #18
eagleeye:

Jeg takker mange gange, og overfører pointene lige straks.

Håber ikke at jeg har været et al for stort problem ;)

Tak for denne gang!

//Jacob
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester