Exakt vad behöver du?
access hjälp?
41 svar · 965 visningar · startad av cupy · sida 2 av 3
Frågan, av cupy
Jag är en nybörjare på ASP men har lyckats knåda ihop ett forum. Problemet är att jag måste använda pagecounter som gör att min script funkar inte eller bara delvis. Exakt - När man väljer en land på listan hämtas den från db som vanligt och listar ut alla info om medlemmar från det valda landet. Som uppdelade på sidor. Den första sidan stämmer, men andra osv, blandar ihop alla länder. Alltså de
Läs frågan i sin helhet →Ursäkta mig, var lite snurrig i kolan...
Testa den här koden:
<FORM name="Land" action="j.asp" method="get">
<select name="sok" onchange="submit();">
<option value=non >-------------------------</option>
<option value=Norge>Norge</option>
<option value=Danmark>Danmark</option>
<option value=Sverige>Sverige</option>
<option value=Tyskland>Tyskland</option>
<option value=italia>Italia</option>
<option value=Holland>Holland</option>
</select>
</form>
<%
Dim strSok
strSok = Request.QueryString("sok")
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From Tabell WHERE Land LIKE '%" & strSok & "%' ORDER BY id DESC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("databas.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 10
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
Do While Not rs.EOF And intRecCount > 0
%>
<!-- HÄR SKRIVER JAG UT TEXTEN I TABELLEN SOM JAG HÄMTADE MED SQL SATSEN -->
<%
intRecCount = intRecCount - 1
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Response.Write "<p>Gå til sida "
For intNum = 1 To intPageCount
Response.Write "<a href='j.asp?page=" & intNum & "&sok=" & Server.URLEncode(strSok) & "'>" & intNum & "</a> "
Next
Response.Write "<p>"
If Clng(intPage) > 1 Then
Response.Write "<a href='j.asp?page=" & intPage - 1 & "&sok=" & Server.URLEncode(strSok) & "'><<</a>"
Else
Response.Write "<<"
End If
If Clng(intPage) < Clng(intPageCount) Then
Response.Write "<a href='j.asp?page=" & intPage + 1 & "&sok=" & Server.URLEncode(strSok) & ">>></a> "
Else
Response.Write ">>"
End If
%>
Har ändrat formen till "GET".
Ändrat page-länkarna så de inkluderar sökvillkoret ("sok").
OBS! Tog bort utrenderingen av tabellen i Do..Loop.
För övrigt så behöver du inte använda dig av "inteRecCount"-variabeln. Om du sätter PageSize:n till något så blir recordset:et Eof när det når slutet på sidan. Dvs din Do..Loop skulle då se ut som följer:
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 10
rs.AbsolutePage = intPage
intPageCount = rs.PageCount
Response.Write "<p><b>Side " & intPage & " af " & rs.PageCount & "</b></p>"
Do Until rs.Eof
%>
<!-- HÄR SKRIVER JAG UT TEXTEN I TABELLEN SOM JAG HÄMTADE MED SQL SATSEN -->
<%
rs.MoveNext
Loop
End If
Tänkte bara du vill veta... :)
Tyvärr det hjälpte inte t.o.m blev sämre fast jag får inte fel meddelande, allting funkar fast inte som den skulle.
Nu hämter inte nånting från db utan visar hela tiden sammaresultat och den andra tips du gav mig gör att paging försvinner, den listar ut allt och kan inte begränsa till t ex att lista10 eller 20 stycken
Sorry. Hade bestämt för mig att det fungerade så. Ber tusen gånger om ursäkt! Får man väl jämföra recordsetets page.
...
Do Until rs.Eof Or rs.AbsolutePage <> intPage
...
Loop
Testa även att byta ut de kodrader som hämtar sidonumret.
intPage = Request.QueryString("page")
If Len(intPage) = 0 Then
intPage = 1
End If
nej , det hjälpte inte heller...
Svårt att felsöka när man inte sitter vid skärmen och ser resultatet. :(
Ja jag vet o tack för hjälp
Ja jag vet o tack för hjälp
Tack för alla andra oxå som ville hjälpa till men som jag ser det går inte eller ingen vet hur det går till så jag tänkte om någon har kanske en pager som skulle fungera ihopp med min script så...
this is it:
<FORM name=Land action = sammasida.asp method=post>
<select name="sok" onchange="submit();">
<font face="verdana, Helvetica" size=2>
<option value=non >-------------------------</option>
<option value= Norge>Norge</option>
<option value= Danmark>Danmark</option>
<option value= Sverige>Sverige</option>
<option value= Tyskland>Tyskland</option>
<option value= italia>Italia</option>
<option value=Holland>Holland</option>
</select></form>
<table><tr>
<td><%= FormatDateTime(Rs("datum"),2)%><td> <a href="visa3.asp?id=<%=TRIM(Server.HTMLEncode(Rs("ID"))) %>"> <% =TRIM(Server.HTMLEncode(Rs("fnamn")))%> </a> </td>
<td> <% =TRIM(Server.HTMLEncode(Rs("Land")))%></td>
</tr>
</table>
Kan någon sätta den här i en pager som funkar?
Ingen som vet hur gör man det?
Svarar väl förmodligen inte på frågan, men ditt formulär saknar infernaliskt många citationstecken, och värdena i selectboxen är inte korrekta då de inleds med ett mellanslag.
Grunden i att få någonting sånt här att fungera är ju att datat från formuläret är korrekt.
Skit in, skit ut, som man brukar säga. ;)
<FORM name="Land" action ="sammasida.asp" method="post">
<select name="sok" onchange="submit();">
<font face="verdana, Helvetica" size=2>
<option value="non" >-------------------------</option>
<option value="Norge">Norge</option>
<option value="Danmark">Danmark</option>
<option value="Sverige">Sverige</option>
<option value="Tyskland">Tyskland</option>
<option value="italia">Italia</option>
<option value="Holland">Holland</option>
</select></form>
Mvh,
Visst anders jag håller med dig men problemet är att allting funkar så länge jag klickar på sidan 2 eller näxt och då listar inte ut längre som den skulle utan hämtar allt från db, listar ut alla inlägg. Helt enkelt den hinner inte med i svängen när man klickar näxt ... så felet ligger i paging script ellerhur?
MVH /Cupy
Hur ser sid-länkarna / nextlänken ut när den kommer till läsaren? Finns all information med där?
Kör du nu med metoden GET i formuläret?
Det står allt på första sidan längst upp om du menar det
......ja det finns med all info
Jag har ändrat till metoden get (igen ;) ) och lagt till sökordet (landet) i sidlänkarna.
Prova detta:
<FORM name="Land" action ="j.asp" method="get">
<select name="sok" onchange="submit();">
<font face="verdana, Helvetica" size=2>
<option value="non">-------------------------</option>
<option value="Norge">Norge</option>
<option value="Danmark">Danmark</option>
<option value="Sverige">Sverige</option>
<option value="Tyskland">Tyskland</option>
<option value="italia">Italia</option>
<option value="Holland">Holland</option>
</select></form>
<% intPage = Request("page")
sok = Request.Querystring("sok")
If isNumeric(intPage) = False Or intPage < 1 Then
intPage = 1
End If
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From Tabell WHERE Land LIKE '%" & sok & "%' ORDER BY id DESC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("databas.mdb")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
rs.PageSize = 10
rs.AbsolutePage = intPage
intRecCount = rs.PageSize
intPageCount = rs.PageCount
Response.Write "<p><b>Side " & intPage & " af " & intPageCount & "</b></p>"
Do While Not rs.EOF And intRecCount > 0 %>
<!-- HÄR SKRIVER JAG UT TEXTEN I TABELLEN SOM JAG HÄMTADE MED SQL SATSEN -->
<table><tr>
<td><%= FormatDateTime(Rs("datum"),2)%><td> <a href="visa3.asp?id=<%=TRIM(Server.HTMLEncode(Rs("ID"))) %>"> <% =TRIM(Server.HTMLEncode(Rs("fnamn")))%> </a> </td>
<td> <% =TRIM(Server.HTMLEncode(Rs("Land")))%></td>
</tr>
</table>
</table>
<!-- Tabell slut -->
<% intRecCount = intRecCount - 1
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Response.Write "<p>Gå til sida "
For intNum = 1 To intPageCount
Response.Write "<a href=""j.asp?page=" & intNum & "&sok=" & Server.URLEncode(sok) & """>" & intNum & "</a> "
Next
Response.Write "<p>"
If Clng(intPage) > 1 Then
Response.Write "<a href=""j.asp?page=" & intPage - 1 & "&sok=" & Server.URLEncode(sok) & """><<</a>"
Else
Response.Write "<<"
End If
Response.Write " "
If Clng(intPage) < Clng(intPageCount) Then
Response.Write "<a href=""j.asp?page=" & intPage + 1 & "&sok=" & Server.URLEncode(sok) & """>>></a> "
Else
Response.Write ">>"
End If
%>
Mvh,
Det blev error
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC driver does not support the requested properties.
/asp/n4/zzzz/real/re/test/j.asp, line 38
--->rs.Open strSQL, strDSN, 1
Prova att byta
rs.Open strSQL, strDSN, 1
till
set objConn = Server.CreateObject("ADODB.Connection")
objConn.open strDSN
rs.Open strSQL, objConn, 3, 3
Mvh,
det blev följande
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/asp/n4/zzzz/real/re/test/j.asp, line 40
-->rs.Open strSQL, objConn, 3, 3
Stämmer SQL-frågan då?
Heter tabellen Tabell, finns där fält som heter Land och id?
Dubbelkolla! :)
Jag gjorede en miss,
SÅLÄNGEFUNKAR ALLT!!!!! Perfekt!
10000 Tack Anders!
Jag tycker att du borde få ett Nobelpris!

