webForumDet fria alternativet

mitt första pagingförsök

ASP

50 svar · 843 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

Jag vill från min databas hämta antalet typ och för varje typ visa vilka namn som tillhör espektiver typ...
Ex.: typ1
namn1
namn2
typ 2
namn 1
namn 2
osv
Jag vill ha sidbrytning efter sista namnet i varje "type"

Efter att sökt här på webforum har jag gjort ett försökt till paging

<%LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
html>
<head>
<title>Vätskebalans</title>

</head>
<BODY>
<% 
sida = TRIM( Request( "liquids" ) )
IF sida = "" THEN sida = 1
Set rs= Server.CreateObject("ADODB.RecordSet")
[B]Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("vbalans.mdb")[/B]
strSQL1 =" SELECT * FROM tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND tblFluidRelat.typeID = tblFluidTypes.typeID ORDER by tblFluidTypes.typeNamn"
rs.Open SQL, Conn, 3,1

typ ="" 
typ = rs("typeNamn")
namn = rs("typeNamn")
visa = typ + namn

rs.PageSize = visa
rs.AbsolutePage = liquids
WHILE NOT rs.EOF AND rowCount < RecSet.PageSize
rowCount = rowCount + 1
If typ<> last_typ Then
Response.Write typ
typ_antal = typ_antal + 1
End if 
Response.Write namn
last_typ = typ

rs.Movenext
WEND
rs.Close
Conn.Close
%>
</body>
</html>

Får felutskriftet

VBScript fel'800a01a8
Objekt krävs.: "
rad 12

rad 12 är fet markerad ovan

Medlem sedan dec. 20025 871 inlägg
#2

Du måste ju "döpa den" till ett objekt först ;) Lägg till detta ovanför rad 12:

Set Conn = Server.CreateObject("ADODB.Connection")
Medlem sedan mars 2002823 inlägg
#3

tack Leon, klantigt av mig :r
Men nu får jag följande felmess...

ADODB.Recordse fel '800a0bb9'
Parametrarna är felaktiga, ligger utanför tillåtet intervall eller skapar en inbörde konflikt

på raden:

rs.Open SQL, Conn, 3,1
Medlem sedan dec. 20025 871 inlägg
#4

Det är fel i din SQL ;) Är inte bra på det här ämnet, och vad jag ser så ser det faktiskt rätt ut. Vänta så ska jag hämta Sebbe :p

Medlem sedan dec. 20025 871 inlägg
#5

Men lol.. det är strSQL1, inte SQL ;) En miss alltså ;)

edit\\ Kör alltså Sebbes kod ;)

Medlem sedan jan. 20032 285 inlägg
#6

Men Leon... ;)
Ändra raden till

rs.Open strSQL1, Conn, 3,1

så funkar det nog mycket bättre! :)

Medlem sedan mars 2002823 inlägg
#7

och nu blir det:

Provider fel'8002005'
TYpblandningsfe

på rad

visa = typ + namn
Medlem sedan jan. 20032 285 inlägg
#8

Vet inte riktigt vad du ska göra, men testa de här två:

visa = CStr(typ) & CStr(namn)

och/eller

visa = CInt(typ) + CInt(namn)
Medlem sedan dec. 20025 871 inlägg
#9

Varför inte bara

visa = typ * 2

Du multiplicerar det talet med två bara, eller? (Om det nu är ett tal?)

Medlem sedan mars 2002823 inlägg
#10

Sebbe skrev

Vet inte riktigt vad du ska göra, men testa de här två:

det jag vill göra är att på varje sida visa 1 typ med tillhörande namn

Medlem sedan mars 2002823 inlägg
#11

LeonL

Om det nu är ett tal?

nej Leon, som du ser av ursprungskoden så är

typ = rs("typeNamn")
namn = rs("typeNamn")
Medlem sedan jan. 20032 285 inlägg
#12

Hur är databasen uppbyggd? :)

Medlem sedan dec. 20025 871 inlägg
#13

Om det nu itne är ett tal, hur kan du då peka rs.PageSize mot "visa"? Ställer i såfall samma fråga som Sebbe gör ;)

Medlem sedan mars 2002823 inlägg
#14

som bilagan

Medlem sedan jan. 20032 285 inlägg
#15

plelkes skrev:

som bilagan

Va? :q

Medlem sedan mars 2002823 inlägg
#16

glömde

Medlem sedan dec. 20025 871 inlägg
#17

\\ Bra att det löste sig ;)

\\ Trodde du hade missförstått att vi ville titta på databasen ;)

Medlem sedan mars 2002823 inlägg
#18

Måste rs.PageSize vara ett tal? Jag vet ju inte antalet inlägg som skall visas - det beror ju på hur många namn det finns...

Vad lsöte sig??

Medlem sedan jan. 20032 285 inlägg
#19

Funkar det kanske såhär då? :)

If Request.QueryString("type") = "" Then
  intType = 1
Else
  intType = CInt(Request.QueryString("type"))
End If

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("vbalans.mdb")
strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
Set objRS = objConn.Execute(strSQL)

If NOT objRS.EOF Then
  Response.Write(objRS("TypeNamn") & "<p>")

  Do Until objRS.EOF
    Response.Write(objRS("FluidNamn") & "<br>")
    objRS.MoveNext
  Loop
Else
  Response.Write("Det finns inga av den typen.")
End If

Set objRS = Nothing
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)
objConn.Close : Set objConn = Nothing

If intType > 1 Then
  Response.Write("<a href=""?type=" & intType - 1 & """>&amp;lt;&amp;lt;</a> ")
Else
  Response.Write("&amp;lt;&amp;lt; ")
Next

If intType < intLast Then
  Response.Write("<a href=""?type=" & intType + 1 & """>&amp;gt;&amp;gt;</a> ")
Else
  Response.Write("&amp;gt;&amp;gt; ")
End If
Medlem sedan mars 2002823 inlägg
#20

Jag får:

Oväntat 'Next'

på rad 37

33: If intType > 1 Then
34: Response.Write("<a href=""?type=" & intType - 1 & """>&lt;&lt;</a> ")
35: Else
36: Response.Write("&lt;&lt; ")
37; Next
38: 
39:If intType < intLast Then
261 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)