webForumDet fria alternativet

Problem med Palles Paging

ASP

21 svar · 402 visningar · startad av magnusfeldth

Medlem sedan jan. 20034 480 inlägg
Frågan#1

Jag använder Palles pagingscript som finns att ladda ner här på wF.

När jag vill redigera den råkar jag ut för trubbel.

Jag har skrivit om koden till:

'// Skriv ut posterna
	For i = intFirstPost To intLastPost
		strName = arrRecSet(0,i) %>
		Hej <%= strName%><br><%=RecSet("Rubrik")%>
	<% Next
	Response.Write vbcrlf &"</td>"& vbcrlf &"</tr>"& vbcrlf &"<tr>"& vbcrlf &"<td>"& vbcrlf

	Call textNavigate(intPage, intTotalPosts, intPostsPerPage, intPages)

felmess:

Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer
/hhgspunktse/hhgs/default.asp, line 102

Varför kan jag inte använda Recset för att skriva ut kolumnobjekt? What is wrong?

Medlem sedan jan. 20032 285 inlägg
#2

Hur ser resten av koden ut?

Medlem sedan jan. 20034 480 inlägg
#3
<!--#include file="functions.asp"-->

<%
'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'//
'//		© 2003
'//		Pagingsystem med GetRows()
'//		Skapat 23 Maj 2003 av Palle Zingmark
'//		[url]www.palleman.nu[/url] | [email]info@palleman.nu[/email]
'//
'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'// Dim

	Dim Connect, RecSet, arrRecSet, intPage, intPostsPerPage, intFirstPost, intTotalPosts
	Dim intPages, intLastPost, strNext, i, strName, intNavStart, intNavEnd, n

'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'// Databashantering

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")

	Set RecSet = Connect.Execute("SELECT * FROM foruminlagg WHERE TradID = " & Trim(Request.QueryString("ForumID")) & " OR ForumID = " & Trim(Request.QueryString("ForumID")) & " ")
		If NOT RecSet.EOF Then arrRecSet = RecSet.GetRows()
	RecSet.Close : Set RecSet = Nothing
	
Connect.Close
Set Connect = Nothing

'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'// Posthantering

If IsArray(arrRecSet) Then

	'// Poster per sida
	intPostsPerPage = 10

	'// Navigeringshantering
	If Len(trim(Request.Querystring("n"))) > 0 Then intPage = cInt(trim(Request.Querystring("n"))) Else intPage = 1
	intFirstPost = (intPage - 1) * intPostsPerPage
	intTotalPosts = UBound(arrRecSet, 2)
	intPages = ((intTotalPosts)\intPostsPerPage)+1

	If intFirstPost + (intPostsPerPage - 1) >= UBound(arrRecSet,2) Then
		intLastPost = UBound(arrRecSet, 2) 
	Else
		intLastPost = intFirstPost + (intPostsPerPage - 1)
		strNext = True
	End If

	'// Skriv ut posterna
	For i = intFirstPost To intLastPost
		strName = arrRecSet(0,i) %>
		Hej <%= strName%><br><%=RecSet("Rubrik")%>
	<% Next
	Response.Write vbcrlf &"</td>"& vbcrlf &"</tr>"& vbcrlf &"<tr>"& vbcrlf &"<td>"& vbcrlf

	Call textNavigate(intPage, intTotalPosts, intPostsPerPage, intPages)

'// Fanns inga poster
Else
	Response.Write "Här var det tomt.. fyll på i databasen bums. =)"

End If

'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
%> &nbsp;</td>
</tr>
<tr>
<td align="center"><%= "Visar posterna <strong>"& intFirstPost+1 &"-"& intLastPost+1 &"</strong> av totalt <strong>"& intTotalPosts+1 &"</strong> poster" %>&nbsp;</td>
</tr>
</table>

Behöver du mer?
OBS, adovbs är inte includat på denna fil... om jag gör det kan jag ta bort dim-ningen då?

Medlem sedan jan. 20032 285 inlägg
#4

Flytta raden

RecSet.Close : Set RecSet = Nothing

längst ner i scriptet. :)

Medlem sedan mars 20015 287 inlägg
#5

Det är iofs fel väg att gå, hela det där scriptet bygger ju på Getrows()
Varför inte använda dig av den array du redan fyllt? (Som du gör när du skriver ut strName tex.

Medlem sedan jan. 20034 480 inlägg
#6

Då fick jag detta felmess istället:

ADODB.Field (0x80020009)
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
/hhgspunktse/hhgs/default.asp
Medlem sedan jan. 20034 480 inlägg
#7

solbulle skrev:

Det är iofs fel väg att gå, hela det där scriptet bygger ju på Getrows()
Varför inte använda dig av den array du redan fyllt? (Som du gör när du skriver ut strName tex.

Hur gör jag såna då? Som sagt bygger detta på Palles script, så det är han som skrivit den delen. Jag kan inget om arrayer, men lär mig gärna.

Medlem sedan jan. 20032 285 inlägg
#8

Detta bör funka. :)

<!--#include file="functions.asp"-->

<%
'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'//
'//		© 2003
'//		Pagingsystem med GetRows()
'//		Skapat 23 Maj 2003 av Palle Zingmark
'//		[url]www.palleman.nu[/url] | [email]info@palleman.nu[/email]
'//
'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'// Dim

	Dim Connect, RecSet, arrRecSet, intPage, intPostsPerPage, intFirstPost, intTotalPosts
	Dim intPages, intLastPost, strNext, i, strName, intNavStart, intNavEnd, n

'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'// Databashantering

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")

	Set RecSet = Connect.Execute("SELECT namn, rubrik FROM foruminlagg WHERE TradID = " & Trim(Request.QueryString("ForumID")) & " OR ForumID = " & Trim(Request.QueryString("ForumID")) & " ")
		If NOT RecSet.EOF Then arrRecSet = RecSet.GetRows()
	RecSet.Close : Set RecSet = Nothing
	
Connect.Close
Set Connect = Nothing

'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
'// Posthantering

If IsArray(arrRecSet) Then

	'// Poster per sida
	intPostsPerPage = 10

	'// Navigeringshantering
	If Len(trim(Request.Querystring("n"))) > 0 Then intPage = cInt(trim(Request.Querystring("n"))) Else intPage = 1
	intFirstPost = (intPage - 1) * intPostsPerPage
	intTotalPosts = UBound(arrRecSet, 2)
	intPages = ((intTotalPosts)\intPostsPerPage)+1

	If intFirstPost + (intPostsPerPage - 1) >= UBound(arrRecSet,2) Then
		intLastPost = UBound(arrRecSet, 2) 
	Else
		intLastPost = intFirstPost + (intPostsPerPage - 1)
		strNext = True
	End If

	'// Skriv ut posterna
	For i = intFirstPost To intLastPost
		strName = arrRecSet(0,i) 
		strRubrik = arrRecSet(1,i)%>
		Hej <%= strName%><br><%=strRubrik%>
	<% Next
	Response.Write vbcrlf &"</td>"& vbcrlf &"</tr>"& vbcrlf &"<tr>"& vbcrlf &"<td>"& vbcrlf

	Call textNavigate(intPage, intTotalPosts, intPostsPerPage, intPages)

'// Fanns inga poster
Else
	Response.Write "Här var det tomt.. fyll på i databasen bums. =)"

End If

'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
%>  </td>
</tr>
<tr>
<td align="center"><%= "Visar posterna <strong>"& intFirstPost+1 &"-"& intLastPost+1 &"</strong> av totalt <strong>"& intTotalPosts+1 &"</strong> poster" %> </td>
</tr>
</table>
Medlem sedan jan. 20034 480 inlägg
#9

strName = arrRecSet(0,i)
strRubrik = arrRecSet(1,i)%>
Hej <%= strName%><br><%=strRubrik%>

Okej, så om man skall lägga in ännu fler så skriver man bara ex
strEpost = arrRecset(2,i) så får man in recset("epost")?

Medlem sedan jan. 20032 285 inlägg
#10

Japp, det kan man säga. :)

(Så är det om det funkar som det är nu. Är inte så hemma med GetRows egentligen.)

Medlem sedan jan. 20034 480 inlägg
#11

hm, tydligen inte...:

Körningsfel i Microsoft VBScript (0x800A0009)
Felaktigt matrisindex: '[number: 2]'
/hhgspunktse/hhgs/default.asp, line 103
Medlem sedan mars 20032 667 inlägg
#12

magnusfeldth skrev:

strName = arrRecSet(0,i)
strRubrik = arrRecSet(1,i)%>
Hej <%= strName%><br><%=strRubrik%>

Okej, så om man skall lägga in ännu fler så skriver man bara ex
strEpost = arrRecset(2,i) så får man in recset("epost")?

Det breor ju på. Första fältet i select-listan i sql-frågan får position 0 i arrayen, andra fältet position 1, tredje position 2, osv...

Medlem sedan mars 20032 667 inlägg
#13

magnusfeldth skrev:

hm, tydligen inte...:

Körningsfel i Microsoft VBScript (0x800A0009)
Felaktigt matrisindex: '[number: 2]'
/hhgspunktse/hhgs/default.asp, line 103

Har du med 3 fält i sin sql-fråga då?

Medlem sedan jan. 20034 480 inlägg
#14
Set RecSet = Connect.Execute("SELECT namn, rubrik, e-post FROM foruminlagg WHERE TradID = " & Trim(Request.QueryString("ForumID")) & " OR ForumID = " & Trim(Request.QueryString("ForumID")) & " ")
		strName = arrRecSet(0,i) 
		strRubrik = arrRecSet(1,i)
		strE-post = arrRecSet(2,i)%>
		Hej <%= strName%><br><%=strRubrik%> <%=strE-post%><br>
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 2 förväntades.
/hhgspunktse/hhgs/default.asp, line 71
Medlem sedan mars 20032 667 inlägg
#15

Har för mig att man inte kan använda bindestreck i kolumnnamn, klammra epost-kolumnen eller ännu hellre byt namn på den.

Medlem sedan jan. 20034 480 inlägg
#16

Jag har inga problem att använda e-post i recset eller liknande...

Medlem sedan jan. 20034 480 inlägg
#17

Nu funkar det, fast dock inte för e-post... skall jag byta namn på den kolumnen eller kan jag komma runt det på annat sätt?

Medlem sedan mars 20032 667 inlägg
#18

Felmeddelandet du fick brukar tyda på att ett kolumnnamn inte finns eller att det är felstavat. Det kan hända att man kan använda bindestreck, på den punkten är jag osäker.

Medlem sedan apr. 20003 174 inlägg
#19

1. Kollla så alla kolumner i din sql-sats finns i databasen
2. Skriv ut din sql-sats och kontrollera så alla värden följer med till sql-satsen.

Medlem sedan mars 20015 287 inlägg
#20

Byt namn på kolumnen till epost om möjligt.

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)