Avatar billede wilweb Nybegynder
31. juli 2004 - 15:11 Der er 8 kommentarer og
1 løsning

udskriv i koloner

udskriv i koloner 


Nedestående kode skriver ud således:
1|2|3
4|5|6

hvordan får jeg den til at udskrive således:
1|3|5
2|4|6


    strSQL = "Select * From users order by strNavn"
    Set rs = Conn.Execute(strSQL)
    maxAntalRows=50
    maxPrRow=4
    antal=0

    do while not rs.EOF and antal < (maxAntalRows*maxPrRow)
   
    if antal mod maxPrRow = 0 then response.write "<tr>"
          response.write "<td width='150' class='tbl_level2'><A Href='find_person.asp?ebruger=" & rs("strBruger")& "'>" & rs("strNavn")& "</td>"
          antal = antal+1
    if antal mod maxPrRow = 0 then response.write "</tr>"
          rs.Movenext
        loop
        if antal mod maxPrRow > 0 then response.write "</tr>"
            response.write "</table>"
    ' nu er data hentet ud, så lukke vores connection igen
    Conn.Close
    Set Conn = Nothing
Avatar billede Slettet bruger
31. juli 2004 - 18:49 #1
Det ser dog utroligt rodet ud... og er du helt sikker på, at der bliver trukket 6 records ud med den kode? Umiddelbart kan jeg kun se 2 rs:
rs("strBruger") og rs("strNavn")

Desuden er det ukorrekt HTML-kode, som højst kun vil fungere i IE.

Skal jeg lave et loop til dig, hvor du kan trække hver rs ud, på den opstilling du beskriver øverst?
I så fald, skal jeg vide hver enkelt rs du vil trække ud.
Avatar billede Slettet bruger
31. juli 2004 - 19:22 #2
Her er den færdige kode:


<%
' Dansk datoformat :
Session.LCID = 1030

' Databaseforbindelse + sti til databasen :
' Den kender du selv, Gizom
Conn.Open DSN

' SQL forespørgsel :
strSQL = "Select * From users order by strNavn"

' Udfør forespørgsel (rs indeholder nu resultatet) :
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke :
Do
%>

<table border="0px" cellpadding="0px" cellspacing="0px" style="width:450px">
    <tr>
        <td style="width:150px" class="tbl_level2"><%Response.Write rs("1")%></td>
        <td style="width:150px" class="tbl_level2"><%Response.Write rs("3")%></td>
        <td style="width:150px" class="tbl_level2"><%Response.Write rs("5")%></td>
    </tr>
    <tr>
        <td style="width:150px" class="tbl_level2"><%Response.Write rs("2")%></td>
        <td style="width:150px" class="tbl_level2"><%Response.Write rs("4")%></td>
        <td style="width:150px" class="tbl_level2"><%Response.Write rs("6")%></td>
    </tr>   
</table>

<%
' Gå til næste Record i rs :
rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File) :
Loop While Not rs.EOF

' Luk databaseforbindelsen :
Conn.Close
Set Conn = Nothing
%>


Du skal nu selv udskifte de Records (rs) ind i de numre, du definerede i dit spørgsmål.
Du skal også selv indsætte din database-forbindelse.

Derefter virker det hele perfekt, og du vil få vist dine data i den rækkefølge, du ønskede iflg. dit spørgsmål.  :-)
Avatar billede wilweb Nybegynder
31. juli 2004 - 20:11 #3
extend:> jeg ved ikke om jeg har skrevet det så det kan misforståes, men sagen er at jeg ikke med sikkerhed kan sige om der er 6 poster i tabellen eller 100 (rs("strnavn")), det jeg vil er, at udskrive alle poster i 3 rækker:
1/3 del i første række
1/3 del i anden række
og sidste 1/3 del i tredie række.
håber det er til at forstå!
Avatar billede wilweb Nybegynder
31. juli 2004 - 20:13 #4
Du har ret i at der er kun rs("strBruger") og rs("strNavn") i tabellen
Avatar billede eagleeye Praktikant
31. juli 2004 - 23:53 #5
Så bliver det noget i stil med:

  'Tæl antal af poster:
    strSQL = "Select count(*) as antal From users"
    Set rs = Conn.Execute(strSQL)
    totalAntal=rs("antal")
    strSQL = "Select * From users order by strNavn"
    Set rs = Conn.Execute(strSQL)
    maxCols = 3
    noRowsPrCol=0 'tæller som bruges i forbindelse med udskrift
    maxRowsPrCol = Int(totalAntal/maxCols)
    if totalAntal mod maxCols > 0 then maxRowsPrCol=maxRowsPrCol+1
   
    Response.Write "<table><tr>"
    do while not rs.EOF
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "<td>"
        response.write "<table>"
      end if
      Response.Write "<tr>"
      response.write "<td width='150' class='tbl_level2'><A Href='find_person.asp?ebruger=" & rs("strBruger")& "'>" & rs("strNavn")& "</td>"
      response.write "</tr>"

      noRowsPrCol=noRowsPrCol+1
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "</table>"
        response.write "</td>"
      end if
      rs.movenext
    loop
    Response.write "</tr></table>"
Avatar billede wilweb Nybegynder
01. august 2004 - 01:34 #6
eagleeye:> den er der næsten!
den rykker kolone 2 og 3 ned et hak.
http://www.wilweb.dk/exp/henogned.png

og hvis jeg udskriver 4 koloner bliver det sådanne:
http://www.wilweb.dk/exp/henogned2.png

Så den rykker nedan jo flere koloner der kommer på, er det noget der kan løses.
Avatar billede eagleeye Praktikant
01. august 2004 - 12:47 #7
Ja så skal der vist tilføje en valign til tabellen sådan dette:
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "<td>"
        response.write "<table>"
      end if


Bliver til:
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "<td valign=""top"">"
        response.write "<table>"
      end if
Avatar billede eagleeye Praktikant
01. august 2004 - 12:57 #8
valig="top" er måske ikke den bedste løsning, tabellen bliver heller ikke afsluttet helt rigtigt når jeg lige kigger på det så prøv sådan her i stedte for så skulle tabelerne også blive afsluttet korrekt:



  'Tæl antal af poster:
    strSQL = "Select count(*) as antal From users"
    Set rs = Conn.Execute(strSQL)
    totalAntal=rs("antal")
    strSQL = "Select * From users order by strNavn"
    Set rs = Conn.Execute(strSQL)
    maxCols = 3
    noRowsPrCol=0 'tæller som bruges i forbindelse med udskrift
    maxRowsPrCol = Int(totalAntal/maxCols)
    if totalAntal mod maxCols > 0 then maxRowsPrCol=maxRowsPrCol+1
   
    Response.Write "<table><tr>"
    do while not rs.EOF
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "<td>"
        response.write "<table>"
      end if
      Response.Write "<tr>"
      response.write "<td width='150' class='tbl_level2'><A Href='find_person.asp?ebruger=" & rs("strBruger")& "'>" & rs("strNavn")& "</td>"
      response.write "</tr>"

      noRowsPrCol=noRowsPrCol+1
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "</table>"
        response.write "</td>"
      end if
      rs.movenext
    loop
    for i=noRowsPrCol to maxCols*maxRowsPrCol-1
      Response.Write "<tr><td class='tbl_level2'>&nbsp;</td></tr>"
      if i = maxCols*maxRowsPrCol-1 then
        response.write "</table>"
        response.write "</td>"
      end if
    next
    Response.write "</tr></table>"
Avatar billede wilweb Nybegynder
01. august 2004 - 14:50 #9
sådanne virkede det! Tak for hjælpen.

<%
  'Tæl antal af poster:
    strSQL = "Select count(*) as antal From users"
    Set rs = Conn.Execute(strSQL)
    totalAntal=rs("antal")
    strSQL = "Select * From users order by strNavn"
    Set rs = Conn.Execute(strSQL)
    maxCols = 3
    noRowsPrCol=0 'tæller som bruges i forbindelse med udskrift
    maxRowsPrCol = Int(totalAntal/maxCols)
    if totalAntal mod maxCols > 0 then maxRowsPrCol=maxRowsPrCol+1
   
    Response.Write "<table><tr>"
    do while not rs.EOF
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "<td valign='top'>"
        response.write "<table>"
      end if
      Response.Write "<tr>"
      response.write "<td width='150' class='tbl_level2'><A Href='find_person.asp?ebruger=" & rs("strBruger")& "'>" & rs("strNavn")& "</td>"
      response.write "</tr>"

      noRowsPrCol=noRowsPrCol+1
      if noRowsPrCol mod maxRowsPrCol = 0 then
        response.write "</table>"
        response.write "</td>"
      end if
      rs.movenext
    loop
    for i=noRowsPrCol to maxCols*maxRowsPrCol-1
      Response.Write "<tr><td class='tbl_level2'>&nbsp;</td></tr>"
      if i = maxCols*maxRowsPrCol-1 then
        response.write "</table>"
        response.write "</td>"
      end if
    next
    Response.write "</tr></table>"
%>
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