Avatar billede totalpc Seniormester
06. marts 2008 - 11:59 Der er 5 kommentarer og
1 løsning

Current Recordset does not support bookmarks

Hej
Jeg har noget kode med paging.
Det vigtigte (tror jeg) ser sådan her ud :

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("familiencaroe.mdb")
Conn.Open DSN
strSQL = "SELECT * FROM blog order by id desc"
Set rs = Conn.Execute(strSQL)

If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount

Det giver fejlen

ADODB.Recordset error '800a0cb3'

Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.

/blogview.asp, line 53

hvor linie 53 er

rs.AbsolutePage = intPage

Hvis jeg i stedet laver denne connection til min db så virker det. Men det vil jeg helst ikke, da jeg så ikke kan finde ud af at læse 2 gange fra basen i samme script.

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM blog order by id desc"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("familiencaroe.mdb")
rs.Open strSQL, StrDSN, 1

Nogle der kan hjælpe mig?
Avatar billede fennec Nybegynder
06. marts 2008 - 13:18 #1
Du skal bruge den sidste kode. Altså den med:
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open strSQL, StrDSN, 1

Sådan en kode skal du dog selv lukke igen, hvis du vil bruge rs navnet igen. Du skal derfor efter dit gennemløb lukke recordsettet:

rs.Open strSQL, StrDSN, 1
while not rs.eof
  ...
  rs.MoveNext
wend
rs.Close '<-- Skriv denne linje
set rs = conn.execute("select ...") '<-- Denne linje virker nu.
Avatar billede totalpc Seniormester
06. marts 2008 - 13:39 #2
Så bliver du lige nød til at hjælpe mig lidt. Jeg skal nemlig bruge den anden læs inden jeg er færdig med den første.. Hvis du forstår. her er hele koden (minus lidt ligegyldigt)

<body>

<%
intPage = Request("page")

If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM blog order by id desc"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("familiencaroe.mdb")
rs.Open strSQL, StrDSN, 1

If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
%>
<table style="width: 100%">
        <tr>
        <td align="middle"><a href="ny_blog.asp">Opret nyt indlæg</a></td>
        </tr>
</table>           
<table style="width: 100%">
        <tr>
        <td class="style3" align="left"><%Response.Write "Side " & intPage & " af " & intPageCount & ""%></td>
        <td class="style3" align="right">
        <%

Response.Write "Gå til side "
For intNum = 1 To intPageCount
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intNum & ">" & intNum & "</a> "
  Next
Response.Write "&nbsp;"
If Clng(intPage) > 1 Then
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intPage - 1 & ">&lt;</a>"
Else
  Response.Write "&lt;"
End If
Response.Write "&nbsp;"
If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intPage + 1 & ">&gt;</a> "
Else
  Response.Write "&gt;"
End If

%>
</td>

        </tr>
</table>
<br>
<%

 
  Do While Not rs.EOF And intRecCount > 0
      %>
      <table style="width: 100%" cellspacing="0">
    <tr>
        <td align="left" class="style7"><a href="default.asp?sitepage=blogview_indlag&id=<%=rs("id")%>"><img src="grafik/plus.gif" class="style5"></a><strong> <% Response.write rs("overskrift") %></strong>
            </td>
        <td align="right" class="style7">
          <% Response.write "<img src=""grafik/comments.gif"">"%>
          kommentar
            <% Response.write "(" %>
<%
HER SKAL JEG SÅ BRUGE ET EKSTRA KALD TIL BASEN DER TÆLLER ANTAL KOMMENTARER!

'sql = "SELECT count(blog_id) as antal FROM Kommentar where blog_id = " & rs("id")
'set rscount = dbc.Execute(sql)

'antal = rscount("antal")
'set rscount = nothing
%>
            <% Response.write antal %>
            <% Response.write ")" %></td>
    </tr>
    <tr>
        <td align="left" class="style2"><img src="grafik/bruger.gif" class="style5">Skrevet af: <% response.write Rs("Brugernavn")%>
            </td>
        <td align="right" class="style2">
          <% Response.write rs("dato") %></td>
    </tr>

</table>
      <table style="width: 100%">
    <tr>       
        <td align="left" class="style2"><% Response.write LEFT(rs("tekst"),120) & "..." %></td>
    </tr>
   
</table>

<br>


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

<br>
<table style="width: 100%">
        <tr>
        <td class="style3" align="left"><%Response.Write "Side " & intPage & " af " & intPageCount & ""%></td>
        <td class="style3" align="right">
        <%

Response.Write "Gå til side "
For intNum = 1 To intPageCount
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intNum & ">" & intNum & "</a> "
  Next
Response.Write "&nbsp;"
If Clng(intPage) > 1 Then
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intPage - 1 & ">&lt;</a>"
Else
  Response.Write "&lt;"
End If
Response.Write "&nbsp;"
If Clng(intPage) < Clng(intPageCount) Then
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intPage + 1 & ">&gt;</a> "
Else
  Response.Write "&gt;"
End If

%>
</td>

        </tr>
</table>




</body></html>
Avatar billede fennec Nybegynder
06. marts 2008 - 14:02 #3
Ahhh. Jeg kan godt forstå dit problem :o)

ADODB.RecordSet objektet kan god selv skaffe en DB forbindelse, men det kan stadig gå gennem et ADODB.Connection objekt. Så sådan et skal du bruge:

'Opret en connection
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("familiencaroe.mdb")
Conn.Open DSN

'Opret et recordest og brug connection objektet
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM blog order by id desc"
rs.Open strSQL, Conn, 1
...
...
'Brug conn objektet til at hente data
set rscount = conn.Execute("SELECT count(blog_id) as antal FROM Kommentar where blog_id = " & rs("id"))
antal = rscount("antal")
set rscount = nothing
...
...
'Luk conn objektet
conn.close
Avatar billede totalpc Seniormester
06. marts 2008 - 14:09 #4
Puha... vi er ude hvor jeg ikke kan bunde, men jeg har prøvet sådan her:

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("familiencaroe.mdb")
Conn.Open DSN

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM blog order by id desc"
rs.Open strSQL, Conn, 1

If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 10
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
%>
<table style="width: 100%">
        <tr>
        <td align="middle"><a href="ny_blog.asp">Opret nyt indlæg</a></td>
        </tr>
</table>           
<table style="width: 100%">
        <tr>
        <td class="style3" align="left"><%Response.Write "Side " & intPage & " af " & intPageCount & ""%></td>
        <td class="style3" align="right">
        <%

Response.Write "Gå til side "
For intNum = 1 To intPageCount
  'Response.Write "<a href=default.asp?page=" & intNum & ">" & intNum & "</a> "
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intNum & ">" & intNum & "</a> "
  Next
Response.Write "&nbsp;"
If Clng(intPage) > 1 Then
  'Response.Write "<a href=default.asp?page=" & intPage - 1 & ">&lt;&lt;</a>"
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intPage - 1 & ">&lt;</a>"
Else
  Response.Write "&lt;"
End If
Response.Write "&nbsp;"
If Clng(intPage) < Clng(intPageCount) Then
  'Response.Write "<a href=default.asp?page=" & intPage + 1 & ">&gt;&gt;</a> "
  Response.Write "<a href=default.asp?sitepage=blog&page=" & intPage + 1 & ">&gt;</a> "
Else
  Response.Write "&gt;"
End If

%>
</td>

        </tr>
</table>
<br>
<%

 
  Do While Not rs.EOF And intRecCount > 0
      %>
      <table style="width: 100%" cellspacing="0">
    <tr>
        <td align="left" class="style7"><a href="default.asp?sitepage=blogview_indlag&id=<%=rs("id")%>"><img src="grafik/plus.gif" class="style5"></a><strong> <% Response.write rs("overskrift") %></strong>
            </td>
        <td align="right" class="style7">
          <% Response.write "<img src=""grafik/comments.gif"">"%>
          kommentar
            <% Response.write "(" %>
<%
'sql = "SELECT count(blog_id) as antal FROM Kommentar where blog_id = " & rs("id")
'set rscount = dbc.Execute(sql)

'antal = rscount("antal")
'set rscount = nothing
set rscount = conn.Execute("SELECT count(blog_id) as antal FROM Kommentar where blog_id = " & rs("id"))
antal = rscount("antal")
set rscount = nothing

%>
            <% Response.write antal %>
            <% Response.write ")" %></td>
    </tr>

Håber det er rigtigt forstået. Men det giver fejlen :
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/blogview.asp, line 117

Som er:
set rscount = conn.Execute("SELECT count(blog_id) as antal FROM Kommentar where blog_id = " & rs("id"))
Avatar billede totalpc Seniormester
06. marts 2008 - 14:45 #5
hov fejl i feltnavn..
Det virker selvom jeg ikke helt forstår det. Smid et svar mister fennec :)
Avatar billede fennec Nybegynder
06. marts 2008 - 14:55 #6
.o) <-- One Eyed Jack
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