webForumDet fria alternativet

Problem med Palles Paging

ASPur ASP

21 svar · 401 visningar · startad av magnusfeldth

magnusfeldthMedlem sedan jan. 20034 480 inlägg
#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?

SebbeMedlem sedan jan. 20032 285 inlägg
#2

Hur ser resten av koden ut?

magnusfeldthMedlem 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å?

SebbeMedlem sedan jan. 20032 285 inlägg
#4

Flytta raden

RecSet.Close : Set RecSet = Nothing

längst ner i scriptet. :)

solbulleMedlem 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.

magnusfeldthMedlem 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
magnusfeldthMedlem 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.

SebbeMedlem 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>
magnusfeldthMedlem 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")?

SebbeMedlem 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.)

magnusfeldthMedlem 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
K@llenMedlem 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...

K@llenMedlem 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å?

magnusfeldthMedlem 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
K@llenMedlem 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.

magnusfeldthMedlem sedan jan. 20034 480 inlägg
#16

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

magnusfeldthMedlem 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?

K@llenMedlem 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.

PalleMedlem 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.

solbulleMedlem sedan mars 20015 287 inlägg
#20

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

138 ms totalt · 3 externa anrop · v20260731065814-full.94fcd635
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)