Avatar billede dj-sejler Praktikant
25. august 2004 - 11:51 Der er 15 kommentarer og
1 løsning

Løkker og databaser

Hej...

jeg skal lave en funktion på min hjemmeside hvor man skal kunne udskrive labels med adresser, hvilket vil sige 21 poster per side

men jeg kan ikke rigtig få det sat sammen.

det er noget med:

<%
for r = 0 to 6
response.write "<tr>"
    for k = 0 to 2
    response.write "<td>test</td>"
    next
response.write "</tr>"
next
%>

Men hvordan får jeg smidt databasen, så jeg også kan skifte hvis der er mere end 21 poster i min db?

er der nogen der kan hjælpe?
Avatar billede ldanielsen Nybegynder
25. august 2004 - 11:57 #1
ja

"SELECT TOP 21 ........"

og

if not Rec.BOF then
  Counter = 0
  do while not Rec.EOF
    If Counter Mod 3 = 0 then Response.Write ("<tr>")
    Response.Write("<td>" & Rec("Hvad du nu skal bruge") & "</td>")
    Counter = Counter + 1
    If Counter Mod 3 = 0 then Response.Write ("</tr>")
    Rec.MoveNext
  loop
end if
Avatar billede ldanielsen Nybegynder
25. august 2004 - 12:00 #2
og derefter for at gøre rækken færdig:

Counter = Counter Mod 3
if Counter > 0 then
  for i = Counter to 3
    Response.Write("<td>&nbsp;</td>")
  end if
  Response.Write ("</tr>")
end if
Avatar billede ldanielsen Nybegynder
25. august 2004 - 12:00 #3
Sorry, lille fejl:

Counter = Counter Mod 3
if Counter > 0 then
  for i = Counter to 3
    Response.Write("<td>&nbsp;</td>")
  next
  Response.Write ("</tr>")
end if
Avatar billede ldanielsen Nybegynder
25. august 2004 - 12:02 #4
Jeg tror jeg har misforstået dig, du vil kunne gå til næste side, ikke? Når der er mere end 21 poster. Øjeblik ...
Avatar billede dj-sejler Praktikant
25. august 2004 - 12:05 #5
ja... til det sidste
Avatar billede ldanielsen Nybegynder
25. august 2004 - 12:07 #6
Ikke testet:

Response.Write ("<table>")
if not Rec.BOF then
  Counter = 0
  do while not Rec.EOF
    If Counter Mod 3 = 0 then Response.Write ("<tr>")
    Response.Write("<td>" & Rec("Hvad du nu skal bruge") & "</td>")
    Counter = Counter + 1
    If Counter Mod 3 = 0 then Response.Write ("</tr>")
    if Counter = 21 then
      Counter2 = Counter Mod 3
      if Counter2 > 0 then
        for i = Counter2 to 3
          Response.Write("<td>&nbsp;</td>")
        next
        Response.Write ("</tr>")
      end if
      Response.Write ("</table><div style=""page-break-before: always;""></div><table>")
      Counter = 0
    end if
    Rec.MoveNext
  loop
end if

Counter = Counter Mod 3
if Counter > 0 then
  for i = Counter to 3
    Response.Write("<td>&nbsp;</td>")
  next
  Response.Write ("</tr>")
end if
Response.Write ("</table>")
Avatar billede ldanielsen Nybegynder
25. august 2004 - 12:09 #7
Hov, der kan spares lidt:


Response.Write ("<table>")
if not Rec.BOF then
  Counter = 0
  do while not Rec.EOF
    If Counter Mod 3 = 0 then Response.Write ("<tr>")
    Response.Write("<td>" & Rec("Hvad du nu skal bruge") & "</td>")
    Counter = Counter + 1
    If Counter Mod 3 = 0 then Response.Write ("</tr>")
    if Counter = 21 then
      Response.Write ("</table><div style=""page-break-before: always;""></div><table>")
    end if
    Rec.MoveNext
  loop
end if

Counter = Counter Mod 3
if Counter > 0 then
  for i = Counter to 3
    Response.Write("<td>&nbsp;</td>")
  next
  Response.Write ("</tr>")
end if
Response.Write ("</table>")
Avatar billede ldanielsen Nybegynder
25. august 2004 - 12:14 #8
if Counter = 21 then
      Response.Write ("</table><div style=""page-break-before: always;""></div><table>")
    end if

skal erstattes med

if Counter Mod 21 = 0 then
      Response.Write ("</table><div style=""page-break-before: always;""></div><table>")
    end if
Avatar billede dj-sejler Praktikant
25. august 2004 - 12:32 #9
virker vidst ikke...
Avatar billede dj-sejler Praktikant
25. august 2004 - 12:50 #10
Den udskriver fint posterne 3 og 3, men den f..k'er min tables...
og udskriver desværre også alle poster..
Avatar billede ldanielsen Nybegynder
25. august 2004 - 12:59 #11
Skal den ikke udskrive alle poster? Den skulle helst lave et nyt table efter syv rækker à 3, med et (usynligt) pagebreak imellem. Dette pagebreak vil printeren forstå og vil starte en ny side.

Prøv at sætte border = 0 for at kunne se hvad der sker
Avatar billede dj-sejler Praktikant
25. august 2004 - 13:50 #12
nåe... nej jeg mente man skulle kunne vælge en ny side hvis der er mere end 21 poster...
altså trykke på en link til en ny side
Avatar billede eagleeye Praktikant
25. august 2004 - 14:22 #13
Det hedder paging og du kan se et ekspempel på det her:
http://activedeveloper.dk/artikler/default.asp?articleid=31
Avatar billede dj-sejler Praktikant
25. august 2004 - 21:09 #14
jeg lukker her... hvis i svarer kan i få nogen af pointene for besværet...
Avatar billede ldanielsen Nybegynder
26. august 2004 - 11:10 #15
ok, men jeg vil da gerne lave det færdigt ...
Avatar billede dj-sejler Praktikant
26. august 2004 - 11:19 #16
jamen det er skam færdigt... ellers tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester