Avatar billede tk Nybegynder
22. april 1999 - 00:00 Der er 11 kommentarer og
1 løsning

Vise 50 pr side?

Hej,

Jeg har lige et script her, men problemet er at jeg har over 300 numre i min database, så det tager en helvedes masse tid at hente. Hvad og hvor skal jeg skrive funktion, der gør at den kun viser de 50 første, og så et link til de 50 næste osv osv.

if request("mode") = "slet" then
SQL = "DELETE FROM scoretricks where id ="& request("id")
conn.execute (SQL)
end if %>
<TABLE>
  <TR>
    <TD>
        &nbsp;
    </TD>
        <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
        <STRONG>
        ID
        </STRONG>
        </FONT>
    </TD>
    <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
        <STRONG>
        Scoretrick
        </STRONG>
        </FONT>
    </TD>

  </TR>

<%
SQL = "SELECT * from scoretricks"
set slet = conn.execute( SQL )
do while not slet.eof
on error resume next %>
  <TR>
    <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
      <A HREF="admin.asp?id=<% = slet("id") %>&mode=slet">Slet</A>
    </TD>
    <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
      <% = slet("id") %>
        </FONT>
    </TD>

<TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
      <% = slet("scoretrick") %>
        </FONT><br>
    </TD>



  </TR>
<%
slet.movenext
loop %>
</TABLE>   
<% conn.close
end if
%>

Avatar billede Dan Nim Seniormester
22. april 1999 - 01:09 #1
Prøv at kigge lidt på dette script :
...
<!--#INCLUDE FILE="ADOVBS.INC" -->
<HTML>
<HEAD>
<TITLE>pageDB.asp</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#FFFFFF" LINK="#FFFFFF" ALINK="#FFFFFF" VLINK="#FFFFFF" LEFTMARGIN="0" TOPMARGIN="0">
<%
'hvilken side er vi paa
intSide = Request("side")
If intSide = "" Then
  intSide = 1
End If

'antal records der skal vises
intAntal = Request("antal")
If intAntal = "" Then
  intAntal = 10
End If

'lav recordset objekt
Set rsData = Server.CreateObject("ADODB.Recordset")

'aduseclient = 3
rsData.CursorLocation = 3
rsData.CacheSize = 5
rsData.Open "SELECT * FROM OK_SHOPS WHERE CountryID = '01'", "DSN=ECCO-SS99"
rsData.movefirst
rsData.pagesize = intAntal
intMaxAntal = CInt( rsData.PageCount )
rsData.AbsolutePage = intSide
intAntalRecords = 0
intAntalFelter = rsData.Fields.Count - 1

Response.Write "<FONT FACE=""Arial"" COLOR=""#000000"">Side " & intSide & " af " & intMaxAntal & "</FONT><BR>"

%>
<TABLE CELLPADDING="2" CELLSPACING="1" BORDER="0" WIDTH="100%">
<TR>
<% 'Put Headings On The Table of Field Names %>
<% For i = 0 To intAntalFelter %>
    <TD BGCOLOR="#000000"><FONT FACE="Arial" SIZE="1"><B><%=Server.HTMLEncode(rsData(i).name) %></B></FONT></TD>
<% Next %>
</TR>

<% 'udfyld med data %>
<% Do While Not rsData.EOF AND intAntalRecords < rsData.PageSize %>
<TR VALIGN="TOP">
<% For i = 0 To intAntalFelter %>
        <% If IsNull(rsData(i)) Then %>
        <TD BGCOLOR="#000000"><FONT FACE="Arial" SIZE="1">&nbsp;</FONT></TD>
        <% Else %>
        <TD BGCOLOR="#000000"><FONT FACE="Arial" SIZE="1"><%=Server.HTMLEncode(CStr(rsData(i)))%></FONT></TD>
        <% End If %>
<% Next %>
</TR>
<%
rsData.movenext
intAntalRecords = intAntalRecords + 1
Loop
rsData.close
set rsData = nothing
%>
</TABLE>
<BR>
<TABLE CELLPADDING="2" CELLSPACING="1" BORDER="0" WIDTH="100%">
<TR ALIGN="CENTER">
    <% If intSide <= 1 Then %>
    <TD BGCOLOR="#000000">&nbsp;</TD>
    <% Else %>
    <TD BGCOLOR="#000000"><A HREF="<%=Request.ServerVariables("SCRIPT_NAME")%>?side=<%= CInt(intSide) - 1 %>&antal=<%=intAntal%>">&lt;&lt;&lt;</A></TD>
    <% End If %>
    <% If CInt(intSide) < CInt(intMaxAntal) Then %>
    <TD BGCOLOR="#000000"><A HREF="<%=Request.ServerVariables("SCRIPT_NAME")%>?side=<%= CInt(intSide) + 1 %>&antal=<%=intAntal%>">&gt;&gt;&gt;</A></TD>
    <% Else %>
    <TD BGCOLOR="#000000">&nbsp;</TD>
    <% End If %>
</TR>
</TABLE>
<BR>
<TABLE CELLPADDING="2" CELLSPACING="1" BORDER="0" WIDTH="100%">
<TR BGCOLOR="#000000" ALIGN="CENTER" VALIGN="TOP">
<%
For counter = 1 To intMaxAntal
%>
    <% If CInt(counter) = CInt(intSide) Then %>
    <TD><FONT FACE="Arial" SIZE="2"><A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?side=<%=counter%>&antal=<%=intAntal%>"><I><%=counter%></I></A></FONT></TD>
    <% Else %>
    <TD><FONT FACE="Arial" SIZE="2"><A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?side=<%=counter%>&antal=<%=intAntal%>"><%=counter%></A></FONT></TD>
    <% End If %>
    <%
    'If counter mod 10 = 0 Then
        'Response.Write "</TR>" & VbCrLf
        'Response.Write "<TR>" & VbCrLf
    'End If
Next
%>
</TR>
</TABLE>
</BODY>
</HTML>
...
Avatar billede asp Nybegynder
22. april 1999 - 08:45 #2
Du finder et godt eksempel (incl. sourcecode) der omhandler paging af recordsets på følgende adresse

http://www.activeserverpages.dk/aspdigital/kapitel2/paging.asp

Avatar billede rdj Nybegynder
22. april 1999 - 08:47 #3
Gi' ham lige en chance Chatstuff.

Her er en lille forklaring

RS = Recordset

RS.pagesize = (Antal pr side)
MaxAntalsider = CInt(RS.PageCount )
RS.AbsolutePage = Den side du gerne vil være på

Avatar billede tk Nybegynder
22. april 1999 - 14:44 #4
ohhhh shiiitt......er der nogen der gider at lave det for mig. Jeg er ikke den vildeste haj til det (endnu) :)
Hvis en eller anden sender en mail til mig, så sender jeg mit asp dokument til vedkommende.
Så kan man jo prøve sig frem, jeg fatter nada af det der chatstuff. :)

Mvh.
Tk
Avatar billede fehaar Nybegynder
22. april 1999 - 16:35 #5
Probelemt ved at benytte AbsolutePage og de andre Pagede funktioner ikke fungerer når du kun har en ForwardOnly cursor i dit RecordSet. Det betyder ikke så meget når man ikke har ret mange poster i din database, men det kan tage en helvedes tid hvis du har en masse poster.

Jeg har lavet en "omvej" så man kan få flere sider effektivt uden at bruge andet end en forward only cursor. Den ligger her :

http://www.infopaq.dk/fehaar/asp_sideopdeling.txt
Avatar billede rdj Nybegynder
23. april 1999 - 08:27 #6
Jeg kan godt lave dit script, men giv' mig lige lidt tid.
Avatar billede rdj Nybegynder
23. april 1999 - 08:47 #7
Denne kode burde virke


if request("mode") = "slet" then
SQL = "DELETE FROM scoretricks where id ="& request("id")
conn.execute (SQL)
end if %>
<TABLE>
  <TR>
    <TD>
        &nbsp;
    </TD>
        <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
        <STRONG>ID</STRONG>
        </FONT>
    </TD>
    <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
        <STRONG>Scoretrick</STRONG>
        </FONT>
    </TD>
  </TR>
<%
SQL = "SELECT * from scoretricks"
RSslet.CursorLocation = 3
RSslet.CacheSize = 5
set RSslet = conn.execute( SQL )
RSslet.pagesize = 50
iMaxAntalSider = CInt( RSslet.PageCount )

'hvilken side er vi paa
iDenneSide = Request("side")
If iDenneSide = "" Then iDenneSide = 1
RSslet.AbsolutePage = iDenneSide

Response.Write "<FONT FACE=""Arial"" COLOR=""#000000"">Side " & iDenneSide & " af " & iMaxAntalSider  & "</FONT><BR>"

do while not RSslet.eof
on error resume next
%>
  <TR>
    <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
      <A HREF="admin.asp?id=<% =RSslet("id") %>&mode=slet">Slet</A>
    </TD>
    <TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
      <% = RSslet("id") %>
        </FONT>
</TD>
<TD>
        <FONT FACE="Arial" SIZE="1" COLOR="#000000">
      <% = RSslet("scoretrick") %>
        </FONT><br>
    </TD>
  </TR>
<%
RSslet.movenext
loop %>
</TABLE>   
<%
    If iDenneSide > 1 then
%><A HREF="\Resultat.asp<%
    Response.write("?Side="& iDenneSide-1 )
%>"><IMG SRC="images/tilbage-pile.gif" WIDTH=40 HEIGHT=24 BORDER=0><% End If%></A>
<%
    If iDenneSide < RSslet.PageCount then
%><A HREF="\Resultat.asp<%
    Response.write("?Side="& iDenneSide+1 )
%>"><IMG SRC="images/frem_pile.gif" WIDTH=40 HEIGHT=24 BORDER=0><% End If%></A>
<% conn.close
end if
%>
Avatar billede tk Nybegynder
23. april 1999 - 16:26 #8
Det virkede ikke helt:

ID  Scoretrick 
Microsoft VBScript runtime error '800a01a8'

Object required: 'RSslet'

/scs/tricks/admin.asp, line 52


Og linje 52:

<%
SQL = "SELECT * from scoretricks"
RSslet.CursorLocation = 3
RSslet.CacheSize = 5
set RSslet = conn.execute( SQL )
RSslet.pagesize = 50
iMaxAntalSider = CInt( RSslet.PageCount )

----------
RSslet.CursorLocation = 3  (:linje 52)
Avatar billede rdj Nybegynder
26. april 1999 - 13:19 #9
Prøve at flytte disse linier til efter
din "set RSslet ....."

RSslet.CursorLocation = 3
RSslet.CacheSize = 5
Avatar billede tk Nybegynder
26. april 1999 - 17:56 #10
Så siger den:

ADODB.Recordset error '800a0e79'

The operation requested by the application is not allowed if the object is open.

/scs/tricks/admin.asp, line 53

Og koden:

<%
SQL = "SELECT * from scoretricks"
set RSslet = conn.execute( SQL )
RSslet.CursorLocation = 3
RSslet.CacheSize = 5
RSslet.pagesize = 50
iMaxAntalSider = CInt( RSslet.PageCount )
Avatar billede rdj Nybegynder
28. april 1999 - 10:46 #11
Jeg svar desværre lidt sent på dit svar
men jeg få ikke en email på ændringer.

Jeg åbner min database på denne måde

    Set Conn = Server.CreateObject("ADODB.Connection")
    Set RSslet = Server.CreateObject("ADODB.Recordset")

    ' Open connection and run query
    Conn.Open "Database", "Brugernavn", "password"
    RSslet.Open SQLstr, conn, 3, 1

Og så behøver du ikke

RSslet.CursorLocation = 3
RSslet.CacheSize = 5


Avatar billede tk Nybegynder
03. maj 1999 - 23:32 #12
Jeg fatter ikke en skid af det, og intet af det virker. Fuck det - jeg er nybegynder og fatter ikke jeres indviklede sprog....endnu. Og jeg har ikke tid eller psykisk overskud til at sætte mig ind i det lige nu.

Men tak for hjælpen dem der hjalp.

Mvh.
Tk
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