bigskyMedlem sedan maj 2002821 inlägg Hur får jag fäljande kod att fungera så att jag kan skriva ut posterna från databasen direkt med rs.SurveyArchive("blabla") istället för att ha det i arrayer?
Dim rsSurveyArchive, arrRecSet, intPage, intPostsPerPage, intFirstPost, intTotalPosts, intPages, intLastPost, strNext, i, strName, intNavStart, intNavEnd, n
SQL = "SELECT * FROM survey ORDER BY Id DESC"
Set rsSurveyArchive = ConnectToSurvey.Execute(SQL)
If Not rsSurveyArchive.EOF Then arrRecSet = rsSurveyArchive.GetRows()
If IsArray(arrRecSet) Then
intPostsPerPage = 3
If Len(Trim(Request.QueryString("page"))) > 0 Then intPage = CInt(Trim(Request.QueryString("page"))) 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
End If
For i = intFirstPost To intLastPost
strDate = arrRecSet(1,i)
strSurvey = arrRecSet(3,i)
Så kanske... Har inte testat
Dim rsSurveyArchive, arrRecSet, intPage, intPostsPerPage, intFirstPost, intTotalPosts, intPages, intLastPost, _
strNext, i, strName, intNavStart, intNavEnd, n
SQL = "SELECT COUNT(*) FROM survey"
Set rsSurveyArchive = ConnectToSurvey.Execute(SQL)
If Not rsSurveyArcive.EOF Then
intTotalPosts = rsSurveyArchive(0)
If Len(Trim(Request.QueryString("page"))) > 0 Then intPage = CInt(Trim(Request.QueryString("page"))) Else intPage = 1
intPostsPerPage = 3
intFirstPost = (intPage - 1) * intPostsPerPage
SQL = "SELECT * FROM survey ORDER BY Id DESC LIMIT "&intFirstPost&", "&(intFirstPost + intPostsPerPage)
Set rsSurveyArchive = ConnectToSurvey.Execute(SQL)
While Not rsSurveyArchive.EOF Then
strDate = rsSurveyArchive.Fields("blabla")
strSurvey = rsSurveyArchive.Fields("blabla")
WEnd
Set rsSurveyArchive = Nothing
Set ConnectToSurvey = Nothing
intPages = ((intTotalPosts)\intPostsPerPage) + 1
If intFirstPost + (intPostsPerPage - 1) >= intTotalPosts Then
intLastPost = intTotalPosts
Else
intLastPost = intFirstPost + (intPostsPerPage - 1)
strNext = True
End If
Else
Response.Write "No records..."
End If
bigskyMedlem sedan maj 2002821 inlägg Något annat förslag, någon?
solbulleMedlem sedan mars 20015 287 inlägg Fungerade inte det där mao?
Varför vill du inte ha det i arrays?
Du kan ju även nu, i ditt orginalscript, använda dig av typ:
response.write rsSurveyArchive("id")
om du så önskar.
(antar att du får köra en rsSurveyArchive.movefirst först.)
bigskyMedlem sedan maj 2002821 inlägg Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i ORDER BY-instruktion
SebbeMedlem sedan jan. 20032 285 inlägg Vad är det du vill göra med koden? Skulle kanske vara lite lättare att få något sammanhang i det då. Är det ett paging-script eller?
bigskyMedlem sedan maj 2002821 inlägg Det är det script som Palle erbjuder här på wF, men jag vill inte ha det i arrayer för då måste jag ändra så mycket annat som redan är kodat och klart.
SebbeMedlem sedan jan. 20032 285 inlägg Kanske såhär då?
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM survey ORDER BY id DESC"
objRS.Open strSQL, ConnectToSurvey, 3, 3
If NOT objRS.EOF Then
intPostsPerPage = 3
intTotalPosts = objRS.RecordCount
If Len(Trim(Request.QueryString("page"))) > 0 Then intPage = CInt(Trim(Request.QueryString("page"))) Else intPage = 1
intFirstPost = (intPage - 1) * intPostsPerPage
intPages = ((intTotalPosts)\intPostsPerPage) + 1
If intFirstPost + (intPostsPerPage - 1) >= intTotalPosts Then
intLastPost = intTotalPosts
Else
intLastPost = intFirstPost + (intPostsPerPage - 1)
strNext = True
End If
Do Until objRS.EOF OR intCount => intLastPost
intCount = intCount + 1
If intFirstPost > 0 Then
For i = 1 To intFirstPost
objRS.MoveNext
Loop
End If
strDate = objRS("date")
strSurvey = objRS("survey")
'O.s.v...
objRS.MoveNext
Loop
End If
objRS.Close : Set objRS = Nothing
Känns dock inte som det optimala sättet att göra det på. :l
bigskyMedlem sedan maj 2002821 inlägg Med följande kod blir det tre sidor att bläddra mellan. Men på den första visas på två poster, på den andra visas endast en post och på den sista sidan får jag ett felmeddelande som säger att en begärda åtgärden kräver en aktuell post. Koden verkar räkna fel...
Dim rsSurveyArchive
Set rsSurveyArchive = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM survey ORDER BY Id DESC"
rsSurveyArchive.Open SQL, ConnectToSurvey, 3, 3
If Not rsSurveyArchive.EOF Then
intPostsPerPage = 3
intTotalPosts = rsSurveyArchive.RecordCount
If Len(Trim(Request.QueryString("page"))) > 0 Then intPage = CInt(Trim(Request.QueryString("page"))) Else intPage = 1
intFirstPost = (intPage - 1) * intPostsPerPage
intPages = ((intTotalPosts)\intPostsPerPage) + 1
If intFirstPost + (intPostsPerPage - 1) >= intTotalPosts Then
intLastPost = intTotalPosts
Else
intLastPost = intFirstPost + (intPostsPerPage - 1)
strNext = True
End If
Do Until rsSurveyArchive.EOF OR intCount => intLastPost
intCount = intCount + 1
If intFirstPost > 0 Then
For i = 1 To intLastPost
rsSurveyArchive.MoveNext
Next
End If
SebbeMedlem sedan jan. 20032 285 inlägg Vilken av navigeringarna använder du? Om du använder knapparna så skulle jag lösa det på det här sättet:
<%
If Request.QueryString("page") = "" OR NOT IsNumeric(Request.QueryString("page")) Then
intPage = 1
Else
intPage = CInt(Request.QueryString("page"))
End If
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM survey ORDER BY id DESC"
objRS.Open strSQL, ConnectToSurvey, 1, 3
If NOT objRS.EOF Then
objRS.AbsolutePage = intPage
objRS.PageSize = 3
Do Until objRS.EOF OR intCount => objRS.PageSize
intCount = intCount + 1
strDate = objRS("date")
strSurvey = objRS("survey")
'O.s.v...
objRS.MoveNext
Loop
If objRS.PageCount > 1 Then
If intPage > 1 Then
Response.Write("<button onclick=""parent.location.href='default.asp?page=';"" title="" Första ""> << </button>" & vbCrLf)
Response.Write("<button onclick=""parent.location.href='default.asp?page=" & intPage - 1 & "';"" title="" Backa ""> < </button>" & vbCrLf)
Else
Response.Write("<button disabled=""disabled""> << </button>" &vbCrLf)
Response.Write("<button disabled=""disabled""> < </button>" & vbCrLf)
End If
If objRS.PageCount < 5 Then intPages = objRS.PageCount : intStart = 1
If objRS.PageCount = 5 Then intPages = 5 : intStart = 1
If objRS.PageCount > 5 Then
If intPage > 5 Then
intPages = intPage : intStart = intPage - 5
Else
intPages = 5 : intStart = 1
End If
Else
intPages = objRS.PageCount : intStart = 1
End If
For i = intStart To intPages
If i = intPage Then
Response.Write("<button> <strong>" & i & "</strong> </button>" & vbCrLf)
Else
Response.Write("<button onclick=""parent.location.href='default.asp?page=" & i & "';"" title="" Sida " & i & " ""> " & i & " </button>" & vbCrLf)
End If
Next
If intPage < objRS.PageCount Then
Response.Write("<button onclick=""parent.location.href='default.asp?page=" intPage + 1 "';"" title="" Nästa ""> > </button>" & vbCrLf)
Response.Write("<button onclick=""parent.location.href='default.asp?page=" & objRS.PageCount & "';"" title="" Sista ""> >> </button>" & vbCrLf)
Else
Response.Write("<button disabled=""disabled""> > </button>" & vbCrLf)
Response.Write("<button disabled=""disabled""> >> </button>" & vbCrLf)
End If
End If
End If
objRS.Close : Set objRS = Nothing
Hoppas att det funkar som du vill, det gör det säkert inte, men man måste ju försöka. ;)
bigskyMedlem sedan maj 2002821 inlägg Jo, nog fungerar den som jag vill alltid. Men det är dock fortfarande så att det på första sidan bara visas 5 poster (de fem första i DBn), på andra sidan endast 1 post (den sista i DBn) och på sista sidan av de tre sidor som det blir, visas ingenting. Bara Nästa | Sista etc. Det finns totalt 15 poster.
Sedan undrar jag vilka parametrar från din kod jag ska använda för att kunna skriva ut att nu visas post 1 - 5 av totalt 15.
SebbeMedlem sedan jan. 20032 285 inlägg Den här koden funkar för mig när jag testar! :D
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("test.mdb")
If Request.QueryString("page") = "" OR NOT IsNumeric(Request.QueryString("page")) Then
intPage = 1
Else
intPage = CInt(Request.QueryString("page"))
End If
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM test"
objRS.Open strSQL, objConn, 1, 3
If NOT objRS.EOF Then
objRS.PageSize = 3
objRS.AbsolutePage = intPage
Do Until objRS.EOF OR intCount => objRS.PageSize
intCount = intCount + 1
strDate = objRS("date")
strSurvey = objRS("survey")
'O.s.v...
objRS.MoveNext
Loop
Response.Write("<br>")
If objRS.PageCount > 1 Then
If intPage > 1 Then
Response.Write("<button onclick=""parent.location.href='default.asp?page=';"" title="" Första ""> << </button>" & vbCrLf)
Response.Write("<button onclick=""parent.location.href='default.asp?page=" & intPage - 1 & "';"" title="" Backa ""> < </button>" & vbCrLf)
Else
Response.Write("<button disabled=""disabled""> << </button>" &vbCrLf)
Response.Write("<button disabled=""disabled""> < </button>" & vbCrLf)
End If
If objRS.PageCount < 5 Then intPages = objRS.PageCount : intStart = 1
If objRS.PageCount = 5 Then intPages = 5 : intStart = 1
If objRS.PageCount > 5 Then
If intPage > 5 Then
intPages = intPage + 1 : intStart = intPage - 3
ElseIf intPage = 5 Then
intPages = intPage + 1 : intStart = intPage - 3
Else
intPages = 5 : intStart = 1
End If
Else
intPages = objRS.PageCount : intStart = 1
End If
If intPages > objRS.PageCount Then intPages = objRS.PageCount : intStart = objRS.PageCount - 4
For i = intStart To intPages
If i = intPage Then
Response.Write("<button> <strong>" & i & "</strong> </button>" & vbCrLf)
Else
Response.Write("<button onclick=""parent.location.href='default.asp?page=" & i & "';"" title="" Sida " & i & " ""> " & i & " </button>" & vbCrLf)
End If
Next
If intPage < objRS.PageCount Then
Response.Write("<button onclick=""parent.location.href='default.asp?page=" & intPage + 1 & "';"" title="" Nästa ""> > </button>" & vbCrLf)
Response.Write("<button onclick=""parent.location.href='default.asp?page=" & objRS.PageCount & "';"" title="" Sista ""> >> </button>" & vbCrLf)
Else
Response.Write("<button disabled=""disabled""> > </button>" & vbCrLf)
Response.Write("<button disabled=""disabled""> >> </button>" & vbCrLf)
End If
End If
Else
Response.Write("Det fanns inga poster.")
End If
objRS.Close : Set objRS = Nothing
objConn.Close : Set objConn = Nothing
%>
bigskyMedlem sedan maj 2002821 inlägg Tack nu fungerar det. Hade du något förslag på hur jag ska skriva ut "visar post 1 - 5 av total 15 poster"?
SebbeMedlem sedan jan. 20032 285 inlägg If intPage * objRS.PageSize > objRS.RecordCount Then
intTill = objRS.RecordCount
Else
intTill = intPage * objRS.PageSize
End If
Response.Write("Visar nu post " & (intPage - 1) * objRS.PageSize + 1 & " till " & intTill & " av totalt " & objRS.RecordCount & ".<p>")
Do Until objRS.EOF OR intCount => objRS.PageSize
intCount = intCount + 1
strDate = objRS("date")
strSurvey = objRS("survey")
'O.s.v...
objRS.MoveNext
Loop
bigskyMedlem sedan maj 2002821 inlägg Perfekt, och tillsist ville jag ju då att det skulle stå "Visar nu post ... till ... av X poster".
SebbeMedlem sedan jan. 20032 285 inlägg Vilket det jag skrev i mitt tidigare inlägg gör!
If intPage * objRS.PageSize > objRS.RecordCount Then
intTill = objRS.RecordCount
Else
intTill = intPage * objRS.PageSize
End If
Response.Write("Visar nu post " & (intPage - 1) * objRS.PageSize + 1 & " till " & intTill & " av totalt " & objRS.RecordCount & " poster.<p>")
bigskyMedlem sedan maj 2002821 inlägg Nja, det stod inte i ditt förra inlägg först, därför frågade jag om det, men nu har du lagt till det. Tack för all hjälp.