webForumDet fria alternativet

mitt första pagingförsök

ASP

50 svar · 843 visningar · startad av plelkes · sida 2 av 3

Frågan, av plelkes

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(

Läs frågan i sin helhet →
Medlem sedan jan. 20032 285 inlägg
#21

plelkes skrev:

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

Hehe, ojdå! Byt bara ut den raden mot 'End If'. ;) :r

Medlem sedan mars 2002823 inlägg
#22

Sebbe, som vanligt ett stort tack till digM E N kan du förklar hur du tänkt?

Medlem sedan jan. 20032 285 inlägg
#23

Är inte så bra på att föklara hur jag tänkt, men jag får väl försöka. ;)

Först hämtar man ut de tre fälten som används där de matchar varandra som du hade skrivit tidigare OCH där TypeId = nummret i Request.QueryString("type") och listar ut dem.

Sedan kollar man vilket som är den sista typen som finns, och om den aktuella typens ID är mindre än den sista typens ID så skrivs det ut en länk till nästa typ och om den aktuella typens ID är större än 1 så skrivs det ut en länk till föregående typ.

Är som sagt dålig på att förklara. ;)

Medlem sedan mars 2002823 inlägg
#24

tyvärr fattar jag inte så mycket mera*skäms*

Men du använder inte dig av paging - eller hur?

vad betyder

v
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

i koden?

Vad jag fattar så bildas navigattionslänkarna med

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

If intType < intLast Then
  Response.Write("<a href=""?type=" & intType + 1 & """>&gt;&gt;</a> ")
Else
  Response.Write("&gt;&gt; ")
End If

två frågor till:

  1. Om jag vill ha navigationslänkar där de olika "type" skrivs ut - går detta?
  2. Konstruktionen är tänkt att användas tiill "formulär" med kryssrutor och txt-fält. Kommer det att funka?
Medlem sedan jan. 20032 285 inlägg
#25

plelkes skrev:

Men du använder inte dig av paging - eller hur?

Jo, en viss sorts paging använder jag mig allt av! Bara inte den "inbyggda" versionen.

plelkes skrev:

vad betyder

v
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

i koden?

Det är det där som tar ut sista id:t från tblFluidsTypes.

plelkes skrev:

Vad jag fattar så bildas navigattionslänkarna med

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

If intType < intLast Then
  Response.Write("<a href=""?type=" & intType + 1 & """>&gt;&gt;</a> ")
Else
  Response.Write("&gt;&gt; ")
End If

Japp, det är korrekt!

plelkes skrev:

två frågor till:

  1. Om jag vill ha navigationslänkar där de olika "type" skrivs ut - går detta?
  2. Konstruktionen är tänkt att användas tiill "formulär" med kryssrutor och txt-fält. Kommer det att funka?

Ungefär så här? :)

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
  intCount = intCount + 1
  Response.Write(objRS("TypeNamn") & "<p>")

  Do Until objRS.EOF
    Response.Write("<input type=""text"" name=""fluid" & intCount & """ value=""" & objRS("FluidName") & """> <input type=""checkbox"" name=""fluid"" value=""" & intCount & """> & "<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

For i = 1 To intLast
  Set objRS = objConn.Execute("SELECT TypeName FROM tblFluidTypes WHERE TypeID = " & i)

  If NOT i = intType Then
    Response.Write("<a href=""?page=" & i & """>" & objRS("TypeName") & "</a> ")
  Else
    Response.Write(objRS("TypeName") & " ")
  End If
Next

Set objRS = Nothing
Medlem sedan mars 2002823 inlägg
#26

Jo, en viss sorts paging använder jag mig allt av! Bara inte den "inbyggda" versionen

Och jag som försökte få den "inbyggda" att funka....

kan du försöka med "pseudokod" = på ren svenska säge nednastående:

intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

Medlem sedan jan. 20032 285 inlägg
#27

plelkes skrev:

kan du försöka med "pseudokod" = på ren svenska säge nednastående:

intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

Sätt intLast till att bli det högsta värdet som finns i kolumnen TypeID i tabellen tblFluidTypes.

Medlem sedan mars 2002823 inlägg
#28

oki - så långt är jag med, men vad gör

(0)

Medlem sedan jan. 20032 285 inlägg
#29

plelkes skrev:

oki - så långt är jag med, men vad gör

(0)

0:an står för ordningsnummret i SELECT-satsen, alltså Max(TypeID) i det här fallet.
Funkade koden jag skrev förut för att skriva ut typerna i pagingen? (Ren nyfikenhet ;))

Medlem sedan mars 2002823 inlägg
#30
<%
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

For i = 1 To intLast
  Set objRS = objConn.Execute("SELECT TypeName FROM tblFluidTypes WHERE TypeID = " & i)

  If NOT i = intType Then
    Response.Write("<a href=""?page=" & i & """>" & objRS("TypeName") & "</a> ")
  Else
    Response.Write(objRS("TypeName") & " ")
  End If
Next

Set objRS = Nothing
%>

det krävs ett

objConn

..

Medlem sedan mars 2002823 inlägg
#31

0:an står för ordningsnummret i SELECT-satsen, alltså Max(TypeID) i det här fallet

Har aldrig sett/lagt märke till denna konstruktion...

När anser du att konstruktonen bör/skall användas?

Medlem sedan jan. 20032 285 inlägg
#32
<%
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)

For i = 1 To intLast
  Set objRS = objConn.Execute("SELECT TypeName FROM tblFluidTypes WHERE TypeID = " & i)

  If NOT i = intType Then
    Response.Write("<a href=""?page=" & i & """>" & objRS("TypeName") & "</a> ")
  Else
    Response.Write(objRS("TypeName") & " ")
  End If
Next

Set objRS = Nothing
objConn.Close : Set objConn = Nothing
%>

Jag använder den där konstruktionen när jag bara ska ta ut ett värde från databasen utan loopar eller liknande. :)

Medlem sedan mars 2002823 inlägg
#33

din senaste kod(jag klistrade in som det var) gav felmess

Microsoft JET Database Engine fel '80040e10'
Det har inte angetts något värde för en eller flera nödvändiga parametrar

Medlem sedan juni 200032 967 inlägg
#34

Kontrollera att tabell- och fältnamn stämmer i alla SQL-frågor.

Mvh

Medlem sedan jan. 20032 285 inlägg
#35

/red Nu vet jag! ;)

<%
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)

For i = 1 To intLast
  Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)

  If NOT i = intType Then
    Response.Write("<a href=""?page=" & i & """>" & objRS("TypeName") & "</a> ")
  Else
    Response.Write(objRS("TypeName") & " ")
  End If
Next

Set objRS = Nothing
objConn.Close : Set objConn = Nothing
%>
Medlem sedan mars 2002823 inlägg
#36

På vilken rad?

Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)
Medlem sedan jan. 20032 285 inlägg
#37

Läs min redigering. :)

Medlem sedan mars 2002823 inlägg
#38

efter att jag följde @nders råd och redigerade fältnamnen lite så fick jag det att nästan fungera

  1. länkarna funkar ej ( prova gärna själva)
  2. det kommer upp en "blodprodukt" innan första länken
Medlem sedan jan. 20032 285 inlägg
#39

Det är som vanligt jag som är klantig! :r

<%
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

Response.Write("<br>")
Set objRS = Nothing
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)

For i = 1 To intLast
  Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)

  If NOT i = intType Then
    Response.Write("<a href=""?type=" & i & """>" & objRS("TypeName") & "</a> ")
  Else
    Response.Write(objRS("TypeNamn") & " ")
  End If
Next

Set objRS = Nothing
objConn.Close : Set objConn = Nothing
%>
Medlem sedan mars 2002823 inlägg
#40

är inte detta samma kod - eller är jag blind?

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)