Avatar billede pokejohn Nybegynder
23. april 2005 - 20:59 Der er 18 kommentarer og
1 løsning

Optælling af poster med paging

"Jeg" har endelig fået paging til at virke (hovedsageligt copy/paste og lidt hjælpe fra gizom), men der opstår et problem. De poster som jeg deler med pagin tager jeg fra en access database, men de er ikke alle poster jeg tager. Kun dem hvor feltet "hp" er "true". Når jeg så vælger at der skal vises f.eks. 5 resultater pr. side tæller den også alle post hvor hp=false med. Dvs. at hvis der er en "false" blandt de fem første poster er der kun 4 post på første side.

Her er koden og på www.frip.dk/lordpoke kan siden ses:

<html><head>
<title>Paging af et recordset</title>
</head><body>

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

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT id, nvn, mdl, pic, hp FROM produkt"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("test.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 5
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
  Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
  Do While Not rs.EOF And intRecCount > 0
   
if rs("hp") = true then
%>
<tr>
    <td><% response.write rs("id")%></td>
    <td><% response.write rs("nvn")%></td>
    <td><% response.write rs("mdl")%></td>
    <td><img src="<% response.write rs("pic")%>"></td>
    <td><% response.write rs("hp")%></td>
</tr>

<%
End If
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
rs.Close
Set rs = Nothing
%>
</table>
<%
Response.Write "<p>Gå til side "
For intNum = 1 To intPageCount
  Response.Write "<a href=index.asp?page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<p>"
If Clng(intPage) > 1 Then
  Response.Write "<a href=index.asp?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=index.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
Else
  Response.Write "&gt;&gt;"
End If
%>

</body></html>

Som det ses er "rs.PageSize = 5", men da jeg i øjeblikket har valgt de fem første post i min database til at være false, er der ingen post på første side..

Nogen der ved hvordan det problem kan afhjælpes?
Avatar billede kalp Novice
23. april 2005 - 21:02 #1
kan du ikke bare gøre det i sql'en?

strSQL = "SELECT id, nvn, mdl, pic, hp FROM produkt WHERE hp = 'true'"
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:03 #2
Prøver lige...
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:10 #3
Hmmm... Den er ikke så glad for det.

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
/lordpoke/index.asp, line 15
Avatar billede kalp Novice
23. april 2005 - 21:12 #4
hvilken datatype er hp?
ingen rækker må have dette felt tomt.. så der skal enten stå true eller false.
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:13 #5
Det er et til/fra felt eller ja/nej felt, så den er aldrig tom
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:13 #6
Har løst det selv
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:14 #7
intRecCount = intRecCount - 1
Skal bare indenfor:
if rs("hp") = true then
Avatar billede kalp Novice
23. april 2005 - 21:15 #8
ahh okay du havde sgu taget højde for det der.. så det slet ikke:) det kan dog også gøres i sql:)
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:17 #9
Kan godt være at det er bedre... Kom lige til at se at den gentager det samme på side 2... Prøv at se www.frip.dk/lordpoke
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:25 #10
Umiddelbart tror jeg at denne ville være bedste løsning, hvis man kunne få det til at virke..:
strSQL = "SELECT id, nvn, mdl, pic, hp FROM produkt WHERE hp = 'true'"

Den ville vel sortere alle false fra helt i starten. Er du sikker på at det skal se sådan ud?
Avatar billede kalp Novice
23. april 2005 - 21:29 #11
Jeg er sikker ja.. hvis hp feltet var af datatypen tekst:)
men kan ikke huske hvordan det var med ja/nej felter..

måske noget hp = selected men det ser bare underligt ud:)
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:33 #12
Jeg prøver mig lidt frem... Det lykkedes nogle gange.

Men hvis du eller nogen andre har forslag så kom endelig med dem..
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:35 #13
Heh...
strSQL = "SELECT id, nvn, mdl, pic, hp FROM produkt WHERE hp = 'true'"
Er forbløffende tæt på.. Det skal bare være uden ''. Altså:
strSQL = "SELECT id, nvn, mdl, pic, hp FROM produkt WHERE hp = true"
Avatar billede kalp Novice
23. april 2005 - 21:36 #14
virker det så:)?
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:37 #15
Så tæt på at du fortjener pointene ;-)... Det havde nok taget lang tiden inden jeg selv var kommet så langt..

Lav et svar!
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:37 #16
@ virker det så:)?
Ja...
Avatar billede kalp Novice
23. april 2005 - 21:38 #17
hehe okay så var der ikke de vilde tricks over det:))
jeg havde næsten udelukket at det var uden '' fordi man jo normalt har dem på ved tekst og uden ved tal.
Avatar billede pokejohn Nybegynder
23. april 2005 - 21:41 #18
Jeg er rimelig ny inden for ASP, så tegnsætningen i det er ikke lige min stærke side, men jeg ved fra PHP at det nogle gange er der det går galt, så naturligt sted at starte..

Takker alligevel. Det havde jeg nok skulle bruge lang tid på at finde ud af selv, og jeg har desværre en deadline, da det er til et skoleprojekt, så jeg er lidt presset og må derfor prøve at springe lidt let over nogle af tingene.. Så må jeg sætte mig ind i det når jeg har lidt mere tid.
Avatar billede kalp Novice
23. april 2005 - 21:43 #19
Jammen så er jeg glad for jeg kunne hjælpe dig lidt på vej:) Kender selv presset;))
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