---
title: "oändlig loop"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/58887-oändlig-loop"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "icaaq"
published: "2002-11-13T09:15:59.000Z"
updated: "2002-11-13T11:10:41.000Z"
replies: 4
views: 272
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/58887-oändlig-loop"
---

# oändlig loop

## #1 — icaaq, 2002-11-13T09:15Z

Jag har haft en gästbok på en site i snart ett år och påden använder jag PatrikB´s paging script och i söndags gick den in i en oändlig loop, jag vet inte om det var någon annan som var inne i koden eller vad som hände men jag behöver hjälp att lösa detta snabbt ....här kommer den aktuella koden

```
[red]
<%
'## -- hämta alla poster --
Function getRecords
	Dim m_objConn
	Dim m_strConnString
	Dim m_strSQL
	Dim m_objRS
	Dim m_arrRecords
	
	m_strConnString = "provider=Microsoft.Jet.OLEDB.4.0;" & _
		"Data Source=c:\inetpub\data\gbok.mdb"
		
	'## -- skapa connection object och öppna upp databasen --
	Set m_objConn = Server.CreateObject("ADODB.Connection")
		m_objConn.Open m_strConnString
		
		'## -- sql-fråga för att hämta alla poster --
		'## -- denna ska du ändra så att den stämmer
		'##    med det som du vill hämta --
		m_strSQL = "SELECT f_namn, f_datum, f_mess " & _
			"FROM t_gbok " & _
			"ORDER BY f_datum DESC"
						
			'## -- recordset för att hämta alla poster --
			Set m_objRS = m_objConn.Execute(m_strSQL)
			
				If Not m_objRS.EOF Then
					m_arrRecords = m_objRS.GetRows
					getRecords = m_arrRecords
				End If
				
				'## -- clean up --
				m_objRS.Close
			Set m_objRS = Nothing
			
		m_objConn.Close
	Set m_objConn = Nothing

End Function
'## -- skriver ut sidnavigeringen --
'## -- skriv ut föregående sida --
Sub PrevPage(ByVal WichPage)
	Dim strScriptName
	strScriptName = Request.ServerVariables("SCRIPT_NAME")

	'## -- skriv ut en länk till föregående sida --
	If CInt(WichPage) > 1 Then
		Response.Write "<A href='" & strScriptName & "?" & _
			"page=" & WichPage - 1 & "'>&laquo; Föregående</A> "
	Else
		Response.Write "&laquo; Föregående "
	End If
End Sub

'## -- skriv ut nästa sida --
Sub NextPage(ByVal HowManyPages, ByVal WichPage)
	Dim strScriptName
	strScriptName = Request.ServerVariables("SCRIPT_NAME")
	
	'## -- skriv ut en länk till nästa sida --
	If CInt(WichPage) < CInt(HowManyPages) Then
		Response.Write "<A href='" & strScriptName & "?" & _
			"page=" & WichPage + 1 & "'>Nästa &raquo;</A>"
	Else
		Response.Write " Nästa &raquo;"
	End If

End Sub

'## -- skriv ut sidnummer navigeringen --
Sub PageNumbers(ByVal HowManyPages, WichPage)
	Dim strScriptName
	Dim I
	
	'## -- kolla om det finns några sidor --
	If HowManyPages = 0 Then
		Response.Write "0"
		Exit Sub
	End If
	
	strScriptName = Request.ServerVariables("SCRIPT_NAME")

	'## -- skriv ut länkar till sid nummer n. 
	'##    Den sida som visas ska ej vara länkad --
	For I = 1 To HowManyPages
		If CInt(I) <> CInt(WichPage) Then
			Response.Write "<A href='" & strScriptName & "?" & _
				"page=" & I & "'>" & I & "</A> "
		Else
			Response.Write "<B>" & I & "</B> "
		End If
	Next

End Sub

'## -- vilken post ska pagingen börja på --
Function getStartID(ByVal PageSize, ByVal ViewPage) ' As Integer
	Dim m_intStart
	m_intStart = ((PageSize * ViewPage) - PageSize)
	getStartID = m_intStart
End Function

'## -------------------------------------------------------------
'## -- räkna ut hur många sidor som ska visas --
'## -- updated: July 14, 2001
'## -- update by: Patrik Berggren, [email]mrwize@mrwize.nu[/email]
'## -------------------------------------------------------------
'##
'## -- vid vissa tillfällen returnerades fel sidantal.
'##    Felet/Buggen berodde på avrundningen med CInt()
'##    och CLng().
'## -- Avrundningen som jag gjorde:
'##
'##    m_intTotalPages = CInt((HowManyRecords / PageSize) + 0.5)
'##
'##    vart i vissa fall fel och sid antalet vart fler än 
'##    vad det egentligen skulle vara.
'##    Lösningen, hoppas jag, är att kolla hur stor resten
'##    blir vid avrundning.
'##    Om resten är större än 0 eller mindre än 0.5 så ska en sida
'##    läggas till.
'##    I annat fall så gäller avrundningen.
'##    Har testat flera olika kombinationer med olika records antal
'##    och sidstorlekar och ej hittat några buggar.
'##    Så nu hoppas jag att denna paging är buggfri *ler*
'## -------------------------------------------------------------
Function countPages(ByVal HowManyRecords, ByVal PageSize)
	Dim m_intTotalPages, m_intRest

	m_intTotalPages = HowManyRecords / PageSize

	If m_intTotalPages < 1 Then
		m_intTotalPages = 1
	Else
		m_intRest = m_intTotalPages - CLng(m_intTotalPages)
		
		If m_intRest > 0 AND m_intRest < 0.5 Then
			m_intTotalPages = CLng(m_intTotalPages) + 1
		Else
			m_intTotalPages = CLng(m_intTotalPages)
		End If
	End If

	'## -- return how many pages --
	countPages = m_intTotalPages
End Function

Dim arrRecords
Dim intPageSize
Dim intPage
Dim intStartID
Dim I
Dim intId
Dim strNamn
Dim dteDatum
Dim strMess
Dim intTotalPages
Dim intTotalRecords

'## -- vilken sida ska visas --
intPage = Request.QueryString("page")
If intPage = "" Then intPage = 1

'## -- hur många poster ska visas per sida --
intPageSize = 10

'## -- hämta alla records, hämtas med metoden getrows och returneras 
'##    som en array. --
arrRecords = getRecords

'## -- vilken post är den första --
intStartID = getStartID(intPageSize, intPage)
'*****************************************************

If IsArray(arrRecords) Then
  intTotalRecords = UBound(arrRecords,2) + 1
  		'## -- hur många sidor finns det i recordsetet --
  		intTotalPages = countPages(intTotalRecords, intPageSize)
  		With Response
		   .Write" <tr> " &vbCrLf
            .Write" <td colspan=""2""> <font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif"">Totalt: <b>"&intTotalPages&"</b> sidor med <b>"&intTotalRecords &"</b> inlägg." &vbCrLf
            .Write" </font><hr noshade size=""1""></td>" &vbCrLf
          .Write" </tr>" &vbCrLf
          End With
  			'Response.Write "<P>Visar nu sida <B>" & intPage & "</B> av " & intTotalPages & "</P>"
  			For I = intStartID To ((intStartID + intPageSize) -1)
	
  				strNamn = arrRecords(0,I)
  				dteDatum = Mid(FormatDateTime(arrRecords(1,I),1),5)&" Kl:"&FormatDateTime(arrRecords(1,I),4)
  				strMess = arrRecords(2,I)
  				 With Response
				.Write" <tr> "& vbCrLf
				.Write" <td bgcolor=""#EBD8D8""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1""><b>"&strNamn&"</b></font></td>"& vbCrLf
				.Write" <td width=""50%"" bgcolor=""#EBD8D8""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">"&dteDatum&"</font></td>"& vbCrLf
				.Write" </tr>"& vbCrLf
				.Write" <tr valign=""top""> "& vbCrLf
				.Write" <td colspan=""2"" height=""50"" bgcolor=""#F7EEEE""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">"&wfParser.Parse(strMess)&"</font></td>"& vbCrLf
				.Write" </tr>"& vbCrLf
				End With		
			If I = UBound(arrRecords,2) Then Exit For
			Next
Else
	'## -- inga poster fanns i db --
	intPage = 0
	intTotalRecords = 0
	intTotalPages = 0
	
	'## -- skriv ut att inga poster hittades --
				With Response 
				.Write"<tr> "& vbCrLf
				.Write"<td colspan=""2"" bgcolor=""#EBD8D8""><font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">Det finns inga inl&auml;gg...........</font></td>"& vbCrLf
				.Write"</tr>"& vbCrLf
				End With
End If
			With Response
          .Write"<tr> "& vbCrLf
            .Write"<td colspan=""2""> "& vbCrLf
              .Write"<hr noshade size=""1""> "& vbCrLf
            .Write"</td> "& vbCrLf
          .Write"</tr> "& vbCrLf
          .Write"<tr> "& vbCrLf
            .Write"<td colspan=""2""> "& vbCrLf
              .Write"<font face=""Verdana, Arial, Helvetica, sans-serif"" size=""1"">"
              End With
				Call PrevPage(intPage)
				Response.Write " | "

				Call NextPage(intTotalPages,intPage)

				Response.Write "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Totalt: "&intTotalPages
				Response.Write " sidor med "&intTotalRecords &" inlägg." &vbCrLf
'***********************************************************************************
[/red]
```

kan ni se nått fel....

mvh icaaq

Permalänk: https://www.webforum.nu/p/58887

## #2 — doggelito, 2002-11-13T10:01Z

Jag använder också hans kod och ser inget fel.
Vad händer om du skriver fasta värden i for-loopen?

```
For I = 1 To 5
```

Permalänk: https://www.webforum.nu/p/853703

## #3 — icaaq, 2002-11-13T10:20Z

DEt konstiga är att koden funkar hemma(lokalt) men så fort jag lägger upp den på hotellet så hänger den sig.......

Hur ser man vilken MDAC man använder?

Permalänk: https://www.webforum.nu/p/853707

## #4 — doggelito, 2002-11-13T10:48Z

lägg till under denna: :)

```
Set m_objRS = m_objConn.Execute(m_strSQL)
response.Write m_objConn.Version
```

/red raden behöver inte ligga där, du kan lägga den direkt under öppningen av connectionobjektet.

Permalänk: https://www.webforum.nu/p/853721

## #5 — icaaq, 2002-11-13T11:10Z

Jag vet inte vad som var fel men jag reparerade databasen och sen funkade allt som det skulle igen......

tack ändå, icaaq

Permalänk: https://www.webforum.nu/p/853734

---

Tråden på webben: https://www.webforum.nu/amne/asp/58887-oändlig-loop
