Jay81Medlem sedan jan. 20034 inlägg Först och främst vill jag bara skriva att jag har sökt en hel del på forumet efter mitt problem men inte lyckats hitta något som passar ;)
Det är så att jag har gjort en liten sökfunktion på sidan, när man klickat på sök så kommer man till en ny sida (search.asp) som ska innehålla 30 resultat på varje sida. Använder mig av en form för sökningen som ser ut så här
<form action="search.asp?what=" method="post">
<input size=15 type="text" name="sokord">
<input type="submit" value="search">
</form>
Så långt är det inga problem, men när jag ska bläddra till tex sidan 2 (första söksidan fungerar korrekt och listar övriga sidor) så kommer det här felmeddelandet
Error Type:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/musicdb/search.asp, line 105
... på den här koden...
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
Jag har paging på första sidan som fungerar fast då är det bara Querystrings och nu kommer det en form med i bilden ;)
Så här ser hela koden ut för den sidan man kommer till efter man klickat på sökknappen
<%
Const perSida = 30
Dim page
If Request.QueryString("page") = "" then
page = 1
Else
page = Request.QueryString("page")
End If
Dim Connect
Dim RecSet
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\musicdb\db.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.CursorLocation = 3
RecSet.CacheSize = perSida
If Request.Form("sokord") <> "" Then
SQL = "Select * from Skivor Where Artist Like '%" & Request.Form("sokord") & "%' ORDER BY Artist asc, Skivnamn asc"
End If
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
If RecSet.EOF Then
Response.Write"Nothing matched your search..."
Else
RecSet.MoveFirst
RecSet.PageSize = perSida
Dim TotalPages
TotalPages = RecSet.PageCount
RecSet.AbsolutePage = page
Dim count
%>
<%
Count = 0
Do While Not RecSet.EOF And Count < RecSet.PageSize
%>
<%
If TotalPages <> 1 Then
If (Int(page)) <> 1 Then
%>
<a href="search.asp?page=<%=(Int(page)-1)%>&what=<% =Request.Form("sokord") %>">«</a>
<%Else%>
«
<%End If%>
<%
Dim Pages
For Pages = 1 To TotalPages
%>
<%If (Int(Pages)) = (Int(page)) Then%>
<%=Pages%>
<%Else%><a href="search.asp?page=<%=Pages%>&what=<% =Request.Form("sokord") %>"><%=Pages%></a>
<%End If%>
<%Next%>
<%End If%>
<% If (Int(page)) <> (Int(TotalPages)) Then %>
<a href="search.asp?page=<%=(Int(page)+1)%>&what=<% =Request.Form("sokord") %>">»</a>
<%Else%>
»
<%End If%>
Problemet verkar vara att Request.Form inte kommer med till nästa sida. Någon vänlig själ som skulle kunna hjälpa till? :OO
solbulleMedlem sedan mars 20015 287 inlägg När du skriver:
what=<% =Request.Form("sokord") %>
"Lägger" du ju över det hela i variablen, querystringen what
Byt namn på what till sokord samt överallt där du använder Request.Form("sokord") skriver du Request("sokord")
Alt. lägger du requesten i en variabel högst upp och arbetar med den på sidan.
Typ:
sokord = Request.Form("sokord")
crisse6Medlem sedan dec. 20002 526 inlägg solis, besviken, killen gjorde sitt forsta inlagg har och inte ens ett valkomnade ;)
Välkommen till wF!
Hoppas du kommer trivas!
Back to topic ;)
Ett tips, "bryt" inte asp-taggarna om du inte maste, ser rorigt ut ;)
solbulleMedlem sedan mars 20015 287 inlägg Attan, ursäkta! Välkommen!
Hjälp efter sju minuter mitt i natten fick han i alla fall. ;)
Jay81Medlem sedan jan. 20034 inlägg :e Tack så mycket.
Det hjälpte dock inte mycket fortfarande samma fel...
Har lagt till
sokord = Request.Form("sokord")
högst upp och ersatt what med sokord och ändrat
<% =Request.Form("sokord") %>">
till
<% =sokord %>
crisse6Medlem sedan dec. 20002 526 inlägg vad far du om du skriver ut sokord da?
solbulleMedlem sedan mars 20015 287 inlägg Kanske...
<%
Const perSida = 30
Dim page
If Request.QueryString("page") = "" then
page = 1
Else
page = Request.QueryString("page")
End If
Dim Connect
Dim RecSet
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\musicdb\db.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.CursorLocation = 3
RecSet.CacheSize = perSida
sokord = Request("sokord")
If sokord <> "" Then
SQL = "Select * from Skivor Where Artist Like '%" & sokord & "%' ORDER BY Artist asc, Skivnamn asc"
End If 'Flytta längst ner?
RecSet.Open SQL, Connect, adOpenStatic, adLockOptimistic
If RecSet.EOF Then
Response.Write"Nothing matched your search..."
Else
RecSet.MoveFirst
RecSet.PageSize = perSida
Dim TotalPages
TotalPages = RecSet.PageCount
RecSet.AbsolutePage = page
Dim count
Count = 0
Do While Not RecSet.EOF And Count < RecSet.PageSize
'Här ska väl typ loppen o utskrivandet vara antar jag.
If TotalPages <> 1 Then
If (Int(page)) <> 1 Then
response.write "<a href=""search.asp?page=" & (Int(page)-1)& "&sokord=" & sokord & """>«</a>"
Else
response.write "«"
End If
Dim Pages
For Pages = 1 To TotalPages
If (Int(Pages)) = (Int(page)) Then
response.write Pages
Else
response.write "<a href=""search.asp?page=" & Pages & "&sokord=" & sokord & """>" & Pages & "</a>"
End If
Next
End If
If (Int(page)) <> (Int(TotalPages)) Then
response.write "<a href=""search.asp?page=" & (Int(page)+1) & "&sokord=" & sokord & """>»</a>"
Else
response.write "»"
End If
%>
Iofs skulle jag vilja flytta ner "End If" som är precis under Sql-frågan till längst ner, annars lär du få ett felmeddelande om du inte har något värde med dig.
solbulleMedlem sedan mars 20015 287 inlägg Attans Crisse, det är banne mig du och jag som håller fanan högt uppe vid de här tidpunkterna. :)
Jay81Medlem sedan jan. 20034 inlägg Skriver jag ut "sokord" så skriver det ut det som man söker efter, det man fyller i i formuläret alltså.
Måste dra till jobbet nu så jag får återkomma om den längre koden, hinner inte kollat på den nu.
Men tack ska Ni ha för hjälpen så här långt :h
CatZMedlem sedan jan. 20022 440 inlägg och fan själv är uppe §jr
crisse6Medlem sedan dec. 20002 526 inlägg Solbulle, det ar fan hog standard pa oss ;)
Jay81, funkade solbulle's kod? annars: du sa att det verkar som om det ar tomt nar du klickar for att visa nasta sida? Vad skrivs ut pa sida2 tex fran formularet?
solbulleMedlem sedan mars 20015 287 inlägg
Måste dra till jobbet nu
Jo, det kanske man skulle göra...
Jay81Medlem sedan jan. 20034 inlägg Det verkar som det fungerar nu, för den intresserade så kan jag skriva hur "jag" gjorde. ;)
Jag använde koden som solbulle skrivit, fast då ville inte "sokordet" komma med i Querystringen så det ville inte lista ut det man sökt på så jag lade till en sak.
If Request.Querystring("sokord") = "" Then
sokord = Request.Form("sokord")
End If
' Det här står fortfarande kvar fast med ovanstående kod under sig
sokord = Request("sokord")
Och så flyttade jag End If i SQL-satsen långt ner ;)
Det är säkert något onödigt som är med men det fungerar i alla fall :OO
Tusen tack! :h