webForumDet fria alternativet

Sidbrytning vid Ny Bokstav

ASP

13 svar · 432 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej

Har gjort ett adressregister till jobbet, som använder Access, ASP, HTML.

Nu om jag skulle vilja skriva ut HELA listan, vill jag ha swå att vid varje ny bkostav (A-Ö) så ska det bli en ny sida, så att alla A är på en sida, alla B på nästa osv.

Behöver ha det såhär för att kunna indexera det lite snyggt i en pärm vid senare tillfälle.

Är detta möjligt, eller svamlar jag bara??

Medlem sedan jan. 20032 285 inlägg
#2

Antar att du menar något sånt här?

If Request.QueryString("letter") = "" Then
  strLetter = "A"
Else
  strLetter = UCase(Request.QueryString("letter"))
End If

strSQL = "SELECT * FROM tabell WHERE kolumn LIKE '" & strLetter & "%'"
Set objRS = objConn.Execute(strSQL)

Do Until objRS.EOF
  'Lista ut poster
  objRS.MoveNext
Loop

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

arrLetters = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Å", "Ä", "Ö")

For i = 0 To UBound(arrLetters)
  If strLetter = arrLetters(i) Then
    Response.Write(arrLetters(i) & " ")
  Else
    Response.Write("<a href=""sidan.asp?letter=" & arrLetters(i) & """>" & arrLetters(i) & "</a> ")
  End If
Next
Medlem sedan feb. 20034 441 inlägg
#3

Hmm, ser intressant ut, men måste jag ha en kolumn i db'n som innehåller tex. A på alla adresser som börjar på A osv??

Kruxet kanske inte är ASP, jag vill ju kunna ta ut posterna och skrtiva ut dom, men en ny sida för varje bokstav.

Kan du förklara lite mer vad ditt script gör?

Medlem sedan juli 20033 147 inlägg
#4

Det var uppe en tråd om det här för inte så länge sen, kolla upp det...

Medlem sedan feb. 20001 590 inlägg
#5

Plocka ur databasen som vanligt, sortera adresserna med ORDER BY osv.

Låt en variabel innehålla första postens första bokstav för adressfältet.
I loopen kollar du om första bokstaven har ändrats sen föregående "loop", då skriver du ut en "style sheet page break" (för du ville väl skriva ut resultatet på papper?) Jag tror det blir den effektivaste koden.

typ (kraftigt förenklat jur resultatet av ASP koden ska se ut):
.
.
<div style="page-break-after: always">A-sidan</div>
<div style="page-break-after: always">B-sidan</div>
.
.

Medlem sedan feb. 20034 441 inlägg
#6

Ok "Toonster", det där låter intressant, men är inte riktigt med, vet inte hur loop mm. ska se ut, fattar inte vad du menar med "Variabel som innehåller första postens första bokstav" ??

Förklara gärna lite mer.

"Melea" => Syftar du på min tråd som var uppe för inte så länge, när jag ville dela in de olika bokstäverna på olika sidor?!

Det har inget att göra med det här, om det nu är så ;)

Medlem sedan jan. 20032 285 inlägg
#7

MickeA.com skrev:

Hmm, ser intressant ut, men måste jag ha en kolumn i db'n som innehåller tex. A på alla adresser som börjar på A osv??

Kruxet kanske inte är ASP, jag vill ju kunna ta ut posterna och skrtiva ut dom, men en ny sida för varje bokstav.

Kan du förklara lite mer vad ditt script gör?

Nej, du behöver ingen ytterligare kolumn i tabellen.

Det min kod gör är att hämta alla poster där första bokstaven börjar på samma bokstav som variabeln letter innehåller (querystringen). Sedan loopar den ut en array innehållande alla bokstäver och länkar till samma sida, fast med en annan bokstav i querystringen. Hoppas att det blev lite klarare nu? :)

Medlem sedan feb. 20034 441 inlägg
#8

Hmm, men grejjen är ju bara själva utskriften, så. säg om jag kör din kod, då visas alla på A, men trycker jag "Skriv Ut", kommer ALLT ut då? Eller bara det på bokstaven A?

Frö jag jag vill ju ha ut HELA listan, fast en ny sida för varje ny bokstav?

(Har bara sovit 4 timmar inatt, så är lite trött, men är det som jag skrev eller?)

Medlem sedan mars 20015 287 inlägg
Medlem sedan feb. 20034 441 inlägg
#10

ok solbulle tack.
Nu har jag en galen idé, kan det här funka:
Jag skapar en array el. likn. med bokstäverna A - Ö, sen hämtar jag ut alla posterna med en SQL, alla poster som börjar på A.

loppar vidare allt och skrivr ut det i en tabell.

När alla A har hämtats, skriver jag ut en tom rad i tabellen:

<tr style="page-break-before: always;"><td></td></tr>

Sen ska det bytas till nästa boksta mi array'en, B osv.

Kan det här vara ngt eller är jag ute och cycklar??

Arrayer och sånt är jag inte så haj på, så dett kodexempel på hur denna loop jag just beskrivit skulle hjälpa massor ;)

Medlem sedan mars 20015 287 inlägg
#11

Du ska väl kunna klara dig med att hämta ut alla poster i ett svep och bara kolla när du skriver ut om första bokstaven har ändrats o då skriva ut "page-break-before" innan.

Medlem sedan feb. 20001 590 inlägg
#12

Precis, det var det som jag "knapphändigt" förklarade i mitt tidigare inlägg. Helt onödigt med en array.

Medlem sedan mars 20015 287 inlägg
#13

Toonster: Ah, missade det inlägget. Jo precis så borde han ju kunna göra. Vidare skulle han ju även kunna räkna raderna han skriver ut med varje bokstav o även lägga in ett sidbryt om en bokstavs poster inte ryms på en sida.

Medlem sedan feb. 20034 441 inlägg
#14

Ok, men fortf. är jag inte m på HUR HELA loopen ska se ut, i.o.m att bokstaven ska uppdateras just när den loopat igenom DET SISTA A't, tex.

så lite kod vore bra ;)

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