Avatar billede oasen Nybegynder
16. april 2002 - 19:52 Der er 23 kommentarer og
1 løsning

Paging-funktion returnerer værdien -1 ?

Jeg har ikke så meget styr på paging - derfor prøvede jeg artiklen på http://www.netcoders.dk/articles.asp?mode=show_article&tech_id=1&article_id=50

Den udskriver records'ne som den skal og kun 10 stk.
Men den laver ikke frem-/tilbage-links, selvom der er over 10 records. Udskriver jeg rs.PageCount returneres værdien -1. Dette er jo forkert.

Hvis jeg medtager:

If Not rs.EOF Then
  rs.AbsolutePage = cINT(Page) *
  rowCount = 0
End If

får jeg denne fejl i linien markeret med *:

Object or provider is not capable of performing requested operation.
Avatar billede kimiwan Nybegynder
16. april 2002 - 20:02 #1
du skal åbne dit recordset med en adOpenStatic cursor, ikke adOpenForwardOnly, som er default.
Avatar billede kimiwan Nybegynder
16. april 2002 - 20:03 #2
Avatar billede oasen Nybegynder
16. april 2002 - 20:07 #3
Og så burde det hele virke?

Kigger lige på det om lidt :)
Avatar billede oasen Nybegynder
16. april 2002 - 20:57 #4
Jeg bruger jo adOpenStatic nu!?

Men uanset hvad jeg skriver får jeg denne fejl:

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x3fc Thread 0x58c DBC 0xb3c780c Jet'.

I denne linie:

Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Avatar billede kimiwan Nybegynder
16. april 2002 - 21:07 #5
prøv at bruge en oledb driver i stedet...

con.open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("dinDatabase.mdb")

oledb driveren er hurtigere og bedre end odbc driveren, du brugere nu.
Avatar billede oasen Nybegynder
16. april 2002 - 21:33 #6
kimiwan---> Den returnerer stadig værdien -1, men jeg får ingen fejlmedd. længere.

Men medtager jeg som sagt denne linie:

rs.AbsolutePage = cINT(Page)

får jeg fejl. Tror du det er den, der gør det?
Avatar billede kimiwan Nybegynder
16. april 2002 - 21:35 #7
hvilken fejl får du?
hvad indeholder Page, hvis du udskriver den?
kan du ikke vise mig hele din kode omkring åbningen af database connection + recordset?
Avatar billede kimiwan Nybegynder
16. april 2002 - 21:41 #8
er det tænkeligt at du ikke har en værdi i Page .. fordi du er på side 1, og du har glemt at gi' den et sidenummer?

i så fald skal du skrive flg. inden du sætter rs.AbsolutePage = Page :

Page = request("page")
if Page = "" then Page = 1
Avatar billede oasen Nybegynder
16. april 2002 - 21:43 #9
response.write rs.PageCount udskriver bare -1 og så er det klart, at den ikke opdeler til flere sider...

Jeg har bare lavet en testfil og kopieret det eksakte indhold fra http://www.netcoders.dk/articles.asp?mode=show_article&tech_id=1&article_id=50 over i den. Har kun rettet selve stien til databasen og navnene på kolonnerne. Og det burde jo ikke have nogen betydning...
Avatar billede oasen Nybegynder
16. april 2002 - 21:45 #10
I toppen af scriptet sættes værdien af page, som det også ses på linket:

Page = Trim(Request("page"))
If Page = "" Then Page = 1
Avatar billede oasen Nybegynder
16. april 2002 - 21:47 #11
rs.AbsolutePage = cINT(Page)

giver fejlen

ADODB.Recordset error '800a0cb3'

Object or provider is not capable of performing requested operation.
Avatar billede oasen Nybegynder
16. april 2002 - 21:49 #12
Jeg ville blive glad, hvis du kunne finde en løsning til mig...
Avatar billede kimiwan Nybegynder
16. april 2002 - 21:49 #13
>kan du ikke vise mig hele din kode omkring åbningen af database connection + recordset?

din egen kode, ikke den, du har kopieret? :o)
Avatar billede oasen Nybegynder
16. april 2002 - 21:50 #14
Jo da - øjeblik
Avatar billede kimiwan Nybegynder
16. april 2002 - 21:52 #15
har du en kopi af adovbs.inc liggende i din rodmappe?
Avatar billede oasen Nybegynder
16. april 2002 - 21:54 #16
<% ' Først finder vi ud af hvad vores paging side er på nu
  Page = Trim(Request("page"))
  If Page = "" Then Page = 1

  ' Standard DSNless connection til databasen db.mdb
  Set Con = Server.CreateObject("adodb.Connection")
con.open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & ("d:/celinedion.dk/cgi-bin/guest.mdb")

  ' Vores SQL-forespørgsel vi ønsker paget
  Sql = "Select * from guesttab Order By ID Desc"

  ' Så begynder det sjove - her sætter vi vores recordset op...
  ' Jeg vil ikke gennemgå alt hvad recordsetkoden gør.
  ' Kig evt. i en dokumentation hvis du ikke helt er med på hvad der er hvad... :-)
  Set rs = Server.CreateObject("ADODB.Recordset")
  rs.CursorType = adOpenStatic

  ' Hvor mange records vil have på hver side... her er den sat til 10
  rs.PageSize = 10
  rs.Open(Sql), Con


  ' Her laver jeg et lille trick der gør at hvis ens forespørgsel er tom,
  ' så får man ikke en fejl
  If Not rs.EOF Then
    rs.AbsolutePage = cINT(Page) ' Hvis denne linie laves til en kommentar forsvinder fejlmedd.
    rowCount = 0
  End If
%>



<html>
<head>
    <title>Paging ifølge Andreas Mailand :-)</title>
</head>
<body>

<%
' her laver vi en løkke der henter vores records ud
While Not rs.EOF and rowCount < rs.PageSize

  Response.Write rs("Dato") & "<br>" & vbCrLf
               
  rowCount = rowCount + 1
  rs.Movenext

Wend

response.write rs.PageCount

' Hvis der er behov for flere sider for at vise hele recordsettet, så kommer her links...
If rs.PageCount <> 1 Then
  For i = 1 to rs.PageCount
    response.write "<a href='paging.asp?page=" & i & "'>" & i & "</a>"
  Next
End If

%>

</body>
</html>
Avatar billede oasen Nybegynder
16. april 2002 - 21:56 #17
Nej... Hvad er adovbs.inc? Er det nødvendigt at inkludere denne?
Avatar billede oasen Nybegynder
16. april 2002 - 21:57 #18
Jeg har nemlig godt bemærket det:

<!-- #INCLUDE VIRTUAL="/adovbs.inc" -->
Avatar billede kimiwan Nybegynder
16. april 2002 - 22:02 #19
du har ikke inkluderet den i koden, du postede lige før ;o)

du skal sørge for at have din adovbs.inc fil included, ellers fungerer det ikke.

hvis du bruger en w2k server, kan du med stor fordel i stedet skrive flg. i toppen af din side i stedet:

<!-- METADATA TYPE="typelib" UUID="00000200-0000-0010-8000-00AA006D2EA4" -->
Avatar billede oasen Nybegynder
16. april 2002 - 22:08 #20
Så er det måske mig selv, der klokker i det....

Jeg hoster siden på en Windows NT server.

Men jeg aner ikke, hvad det er for en fil. Hvad gør den, og hvor finder jeg den? :)
Avatar billede kimiwan Nybegynder
16. april 2002 - 22:11 #21
Avatar billede oasen Nybegynder
16. april 2002 - 22:15 #22
Men plejer den slags filer ikke allerede at ligge på serveren? Nå, jeg prøver lige :)
Avatar billede oasen Nybegynder
16. april 2002 - 22:24 #23
Hehe - det gjorde hele udslaget, men måske egentlig ikke svært at forstå... Godt du så MIN kode :)

Nu skal jeg bare have sakset den ind i mine rigtige filer, men det skulle ikke være noget problem, nu når det virker. Mange gange tak for hjælpen :)
Avatar billede kimiwan Nybegynder
16. april 2002 - 22:25 #24
god fornøjelse :o)  og tak for points.
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