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 Hur ser resten av koden ut?
<!--#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
'//---------------------------------------------------------------------------------------------------------------------------------------------------------------
%> </td>
</tr>
<tr>
<td align="center"><%= "Visar posterna <strong>"& intFirstPost+1 &"-"& intLastPost+1 &"</strong> av totalt <strong>"& intTotalPosts+1 &"</strong> poster" %> </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 Flytta raden
RecSet.Close : Set RecSet = Nothing
längst ner i scriptet. :)
solbulleMedlem sedan mars 20015 287 inlägg 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.
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
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 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>
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 Japp, det kan man säga. :)
(Så är det om det funkar som det är nu. Är inte så hemma med GetRows egentligen.)
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
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
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å?
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 Har för mig att man inte kan använda bindestreck i kolumnnamn, klammra epost-kolumnen eller ännu hellre byt namn på den.
Jag har inga problem att använda e-post i recset eller liknande...
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 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 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 Byt namn på kolumnen till epost om möjligt.