• 28-11-2012, 19:18:25
    #1
    Merhaba arkadaşlar, genelde kullandığım şekilde Access veritabanı ile yaparken başarılı bir şekilde sayfalayan kodlama yapısı şuanda Mysql veritabanında bir hata verdi ;

    ADODB.Recordset error '800a0cb3' Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype


    Neden olabilir ?

    rs.absolutepage = request.querystring("sayfa")

    bölümünde böyle bir hata alıyorum, sayfa sayısını querystring ile çekiyorum ve bu koddan önce boş olup olmadığını kontrol edip, boş ise 1 değerinin gelmesini sağlıyorum :\ İlk defa karşılaştım, webde doğru düzgün bir çözüm yok açıkçası.. Herşeyi denedim...

    İyi çalışmalar,
  • 28-11-2012, 19:57:55
    #2
    Üyeliği durduruldu
    mysql absolutepage parametresine cevap veremez o yüzden sayfalama mantığın tamamıyla değişecek. ayrıca for döngüsü yerine de do while kullanacaksın. sayfa aralıklarını da sql koduna LIMIT ekleyerek halledeceksin. mysql'in sayfalamada ki artısı LIMIT fonksiyonudur. hızlı ve pratik. sana bir örnek vereceğim, gelişmiş bir sayfalama yöntemi. kendine uyarlayıp kullanabilirsin.

    Alıntı
    <%
    Set rs=Bag.Execute("SELECT Count(id) as tpl FROM haberler")
    Toplam=Cint(rs("tpl")) 'haber sayısını aldık

    PageLen = 20 ' liste sayısı, her sayfada 20 adet görünecek
    PageNo = Request.QueryString("S")
    if PageNo = "" OR Not IsNumeric(PageNo) Then PageNo = 1
    TotalRecord = Cint(rs("tpl"))
    PageStart = ((PageLen*PageNo)-PageLen)
    PageEnd = PageLen
    If TotalRecord <= PageLen Then
    TotalPage =1
    ElseIf (TotalRecord Mod PageLen = 0) Then
    TotalPage =(TotalRecord/PageLen)
    Else
    TotalPage =Int(TotalRecord/PageLen)+1
    TotalPage = Cint(TotalPage)
    End If


    If Cint(Toplam) = 0 Then
    intSayfaSayisi = 0
    Else
    intGecerliSayfa = PageNo
    If intGecerliSayfa = "" OR IsNumeric(intGecerliSayfa) = False Then intGecerliSayfa = 1
    intSayfaSayisi=TotalPage
    End If

    Set rs=Server.CreateObject("ADODB.Recordset")
    sql="SELECT * FROM haberler ORDER BY id DESC LIMIT "&PageStart&" , "&PageEnd&"" ' listeleme sorgusu
    rs.open sql,Bag,1,3
    If Not rs.Eof Then
    k=(PageNo * PageLen)-PageLen+1
    Do While Not rs.Eof
    %>

    <%=rs("baslik")%> <br />

    <%
    k=k+1
    rs.MoveNext : Loop
    Else
    %>
    kayıt yok
    <%
    End If
    rs.Close : Set rs=Nothing
    %>


    <div class="sayfa">
    <%
    Aralik = 2
    intSayfaAltSiniri = intGecerliSayfa - Aralik
    intSayfaUstSiniri = intGecerliSayfa + Aralik
    intSolGrupSayisi = 1 + Aralik
    intSagAltSinir = intSayfaSayisi - Aralik

    If (intSayfaUstSiniri >intSayfaSayisi) Then
    intSayfaAltSiniri = intSayfaSayisi - (2 * Aralik)
    intSayfaUstSiniri = intSayfaSayisi
    End If

    If (intSayfaAltSiniri <= 0) Then
    intSayfaAltSiniri = 1
    intSayfaUstSiniri = intSayfaAltSiniri + (2 * Aralik)
    If intSayfaUstSiniri >= intSayfaSayisi Then intSayfaUstSiniri = intSayfaSayisi
    End If

    If intSolGrupSayisi >= intSayfaAltSiniri Then intSolGrupSayisi = intSayfaAltSiniri - 1
    If intSagAltSinir <= intSayfaUstSiniri Then intSagAltSinir = intSayfaUstSiniri + 1

    If Cint(intGecerliSayfa) >1 Then
    %>
    <a href="Haberler.asp?S=1" title="İlk Sayfa">««</a>
    <a href="Haberler.asp?S=<%=intGecerliSayfa-1%>" title="Önceki Sayfa">◄</a>
    <%
    End If

    For i = 1 to Cint(intSolGrupSayisi)
    If CInt(i) = (intGecerliSayfa) Then
    Else
    %>
    <a href="Haberler.asp?S=<%=i%>" title="<%=i%>. Sayfa">
    <%
    End If
    Response.Write i &"</a>"
    Next

    If (intSayfaAltSiniri - intSolGrupSayisi >1 ) Then Response.Write "<a href=""javascript:;"">. . .</a>"

    For i = intSayfaAltSiniri to Cint(intSayfaUstSiniri)
    If CInt(i) = CInt(intGecerliSayfa) Then
    %>
    <a href="javascript:;" title="<%=i%>. Sayfa" class="aktif"><%=i%></a>
    <%
    Else
    %>
    <a href="Haberler.asp?S=<%=i%>" title="<%=i%>. Sayfa"><%=i%></a>
    <%
    End If
    Next

    If (intSagAltSinir - intSayfaUstSiniri >1) Then Response.Write "<a href=""javascript:;"">. . .</a>"

    For i = intSagAltSinir to Cint(intSayfaSayisi)
    If CInt(i) = CInt(intGecerliSayfa) Then
    %>
    <a href="javascript:;" title="<%=i%>. Sayfa" class="aktif"><%=i%></a>
    <%
    Else
    %>
    <a href="Haberler.asp?S=<%=i%>" title="<%=i%>. Sayfa"><%=i%></a>
    <%
    End If
    Next

    If CInt(intGecerliSayfa)<>CInt(intSayfaSayisi) Then
    %>
    <a href="Haberler.asp?S=<%=intGecerliSayfa+1%>" title="Sonraki Sayfa">►</a>
    <a href="Haberler.asp?S=<%=intSayfaSayisi%>" title="Son Sayfa">»»</a>
    <%End If%>
    </div>


  • 28-11-2012, 20:08:05
    #3
    @ShekerChi

    Çok teşekkür ederim, aklıma gelmişti veritabanından kaynaklanabileceği ama sadece fikirdi, iyi oldu bu örnek biraz sadeleştiricem, kullanacağım

    İyi çalışmalar,