Artiklar » ASP » Skriva ut telefonbok med rubriker...

 
 

Skriva ut telefonbok med rubriker...

Författare: mactommy
Datum: den 10 juli 2007
Antal lästa: 3809
Ej stjärnmärkt

Det är ett flertal personer som har funderat på hur man kan gruppera ett gäng poster ifrån en databas och skriva ut en rubik över varje grupp. Proceduren är egentligen ganska enkel.

Vi hämtar ut vår information ifrån databasen med en vanlig SQL-sats, vi låtsas att vi vill ha rubrik på varje enskild ort i vår telefonlista. Kod:
Set RecSet = Connect.Execute("SELECT fldNamn, fldTelefon, fldOrt FROM tblTelefonbok ORDER BY fldOrt, fldNamn")


Vi kollar så att vi inte får problem med tomma poster och vi startar våran loop: Kod:
If RecSet.EOF then
  Response.Write "Det fanns ingenting i telefonboken..."
Else
  Do Until RecSet.EOF
  ' Här komme koden som skal skrivas ut...
  RecSet.MoveNext
  Loop
End If


Vi börjar att tilldela en variabel som heter strOrt som får hålla koll på vilken aktuell ort vi är på och kollar om den är annorlunda mot orten som hämtas ifrån databsen. Kod:
If strOrt <> RecSet("fldOrt") then


När vi kör vårat script så är alla strängar "tomma" så länge vi inte har tilldelat dessa något värde och eftersom vi vill ha en rubrik utskriven så komemr våran IF-sats nu att utfalla.

Vi skriver ut rubriken och tilldelar strOrt samma värde som orten ifrån databsen... och avslutar våran IF-sats. Kod:
Response.Write "<div style=""font-weight: bold;"">" & RecSet("fldOrt") & "</div>"
strOrt = RecSet("fldOrt")
End If


Nu kan vi börja skriva ut våran telefonlista. Kod:
Response.Write "<div>" & RecSet("fldNamn") & - & RecSet("fldTelefon") & "</div>"


Under varje loop-varv så kommer vi att kolla om variabeln strOrt är något annat än RecSet("fldOrt"), har vi bytt ort så skriver vi ut rubriken och tilldelar strOrt det nya ortsnamnet.

Vips så har vi en enkel metod att skriva ut en rubrik till våran telefonbok... och den färdiga koden kan se ut så här. Kod:
Set RecSet = Connect.Execute("SELECT fldNamn, fldTelfon, fldOrt FROM tblTelefonbok ORDER BY fldOrt, fldNamn")
If RecSet.EOF then
  Response.Write "Det fanns ingenting i telefonboken..."
Else
  Do Until RecSet.EOF
  If strOrt <> RecSet("fldOrt") then
    Response.Write "<div style=""font-weight: bold;"">" & RecSet("fldOrt") & "</div>"
    strOrt = RecSet("fldOrt")
  End If
  Response.Write "<div>" & RecSet("fldNamn") & - & RecSet("fldTelefon") & "</div>"
  RecSet.MoveNext
  Loop
End If
RecSet.Close


Vi kan även använda oss utav GetRows för att hämta ut all data ifrån databasen och göra en likadan utskrift, här tänker jag bara på att visa principen så får ni undersöka scriptet vidare om hur det funkar med GetRows och arrayer. Kod:
Set RecSet = Connect.Execute("SELECT fldNamn, fldTelfon, fldOrt FROM tblTelefonbok ORDER BY fldOrt, fldNamn")
If RecSet.EOF then
  Response.Write "Det fanns ingenting i telefonboken..."
Else
  arrTelefonbok = RecSet.GetRows
  bolTelefonbok = True
End If
RecSet.Close

' Här skriver vi ut telefonboken...
If bolTelefonbok = True then
  For intCounter = 0 to UBound(arrTelefonbok.2)
  If strOrt <> arrTelefonbok(2,intCounter) Then
    Response.Write "<div style=""font-weight: bold;"">" & arrTelefonbok(2,intCounter) & "</div>"
    strOrt = arrTelefonbok(2,intCounter)
  End If
  Response.Write "<div>" & arrTelefonbok(0,intCounter) & - & arrTelefonbok(1,intCounter) & "</div>"
  Next
End If


Fördelen som jag ser det med GetRows är att man hämtar ut all information till en array för att kunna skriva ut den var som helst på sidan, genom att man hämtar ut informationen så tidigt som möjligt gör att databsen kan stängas direkt och inte när sidan har laddats klart.
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,0781 sekunder att ladda sidan