webForumDet fria alternativet

optimera hämtning av meny från db

ASP

1 svar · 141 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Frågan#1

Har en meny där rubrikerna ligger i db sorterade under vanster1, vanster 2 o.s.v. När jag ska hämta dom verkar det orimligt att skapa nya recset för varje undermeny? Hur fixar jag detta med mindre och mer optimal kod?

Sub menylistning()

Set RS = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM Menyn WHERE Rub = 'vanster1'"
   RS.Open Visa, Connect 

Response.Write "<table border='0' width='150' height='*' cellpadding='0' cellspacing='0' class='t'><tr><td width='150' height='*' bgcolor='#FFFFFF'><img src='rub/bilar.gif' width='150' height='20' border='0'></td></tr>"

DO UNTIL RS.EOF

Response.Write "<tr><td width='150' height='*' bgcolor='#FFFFFF' background='bilder/bak_ruta_rob.gif'>&nbsp;&nbsp;<img src='bilder/knapp.gif' width='8' height='7' border='0'>&nbsp;<a href='nya_bilar.htm'>" & RS("Kategori") & "</a></td></tr>"
  RS.MoveNext
  If Rs.EOF Then
Response.Write "<tr><td width='150' height='20' bgcolor='#FFFFFF' background='bilder/rutaned_rob.gif' valign='top'>&nbsp;</td></tr></table><br><br>"
end if

Loop

Set RS = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM Menyn WHERE Rub = 'vanster2'"
   RS.Open Visa, Connect 

Response.Write "<table border='0' width='150' height='*' cellpadding='0' cellspacing='0' class='t'><tr><td width='150' height='*' bgcolor='#FFFFFF'><img src='rub/delar_tillb.gif' width='150' height='20' border='0'></td></tr>"

DO UNTIL RS.EOF

Response.Write "<tr><td width='150' height='*' bgcolor='#FFFFFF' background='bilder/bak_ruta_rob.gif'>&nbsp;&nbsp;<img src='bilder/knapp.gif' width='8' height='7' border='0'>&nbsp;<a href='nya_bilar.htm'>" & RS("Kategori") & "</a></td></tr>"
  RS.MoveNext
  If Rs.EOF Then
Response.Write "<tr><td width='150' height='20' bgcolor='#FFFFFF' background='bilder/rutaned_rob.gif' valign='top'>&nbsp;</td></tr></table><br><br>"
end if

Loop

[B]o.s.v. med vanster3
o.s.v. med vanster4
o.s.v.[/B]

RS.Close: Set rs = nothing

End Sub
Medlem sedan dec. 20003 887 inlägg
#2

En förkortad variant går att göra, men om det är någon större optimering vete tusan.
Frågan är om det ens blir rätt ;)

Sub MenyListning()
  Dim objRS, strSql, strLast, strEnd

  Set objRS = Server.CreateObject("ADODB.Recordset")

  strSql = "SELECT Rub, Kategori FROM Menyn ORDER BY Rub"

  objRS.Open strSql, Connect

  blnEnd = False
  strLast = ""

  While Not objRS.EOF
    If Not strLast = objRS(1) Then
      Response.Write "<table border='0' width='150' height='*' cellpadding='0' cellspacing='0' class='t'>" & _
        "<tr><td width='150' height='*' bgcolor='#FFFFFF'>" & _
        "<img src='rub/delar_tillb.gif' width='150' height='20' border='0'></td></tr>"

      blnEnd = True
    End If

    Response.Write "<tr><td width='150' height='*' bgcolor='#FFFFFF' background='bilder/bak_ruta_rob.gif'>" & _
        "  <img src='bilder/knapp.gif' width='8' height='7' border='0'>" & _
        " <a href='nya_bilar.htm'>" & objRS(0) & "</a></td></tr>"

    strLast = objRS(1)

    objRS.MoveNext

    If blnEnd Then
      Response.Write "<tr><td width='150' height='20' bgcolor='#FFFFFF' background='bilder/rutaned_rob.gif' valign='top'> </td></tr></table><br><br>"

      blnEnd = False
    End If
  Wend

  objRS.Close

  Set objRS = Nothing
End Sub
267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)