Avatar billede el-prebsi Nybegynder
15. april 2002 - 21:12 Der er 5 kommentarer og
2 løsninger

Todimensionelt udtræk fra access

Hej...

Jeg har en database med en kolonne der hedder kategori og en der hedder mainkategori. Jeg vil gerne have stillet en tabel op, med disse værdier..
Det skal være stillet op således


----------------------------------------------------
| mainkategori 1 | mainkategori 2 | mainkategori 3 |
----------------------------------------------------
| kategori 1    | kategori 4    | kategori 7    |
| kategori 2    | kategori 5    | kategori 8    |
| kategori 3    | kategori 6    | kategori 9    |
----------------------------------------------------
| mainkategori 4 | mainkategori 5 | mainkategori 6 |
----------------------------------------------------
| kategori 10    | kategori 13    | kategori 16    |
| kategori 11    | kategori 14    | kategori 17    |
| kategori 12    | kategori 15    | kategori 18    |
----------------------------------------------------


kategori 1,2,3 er selvfølgelig udledt hvor mainkategori er lig med mainkategori 1 dvs. (SELECT kategori WHERE mainkatogori = 'mainkategori 1') (hvis det hjalp lidt mere..


Det er et problem for mig at se, hvordan jeg kan lave min kodning... Jeg har prøvet nedenstående, men det får serveren til at gå ned:::

<%
dim I, L(3), sqlmain, sqlsecond, restsecond

sqlmain = "SELECT DISTINCT mainkategori FROM kategori ORDER BY mainkategori"
set rest = cn.execute(sqlmain)
%>

<table>
<%
while not rest.eof
  for I = 1 to 3
    if not rest.eof then
      L(I) = rest("mainkategori")
      if I = 1 then
        response.write ("<tr>")
      end if
      response.write ("<td class=""headlist"">" & rest("mainkategori") & "</td>")
      if I = 3 then
        response.write ("</tr>")
      end if
    end if
  next

  for I = 1 to 3
    sqlsecond = "SELECT kategori FROM kategori WHERE mainkategori = '" & L(I) & "'"
    set restsecond = cn.execute(sqlsecond)
    if I = 1 then
      response.write ("<tr>")
    end if
    response.write ("<td class=""list"">")
    while not restsecond.eof
      response.write (restsecond("kategori"))
    wend
    response.write ("</td>")
    if I = 3 then
      response.write ("</tr>")
    end if
  Next
wend
%>

</table>


Jeg håber nogen kan hjælpe mig...


P.S. Tabellen hedder også kategori...
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:18 #1
du skal huske at MoveNext før du looper:

    end if
    response.write ("<td class=""list"">")
    while not restsecond.eof
      response.write (restsecond("kategori"))
      restsecond.movenext
    wend
    response.write ("</td>")
    if I = 3 then
      response.write ("</tr>")
    end if
  Next
rest.movenext
wend
%>
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:22 #2
..hvis du ikke skriver recordsetnavn.movenext før do looper videre til næste række i dit recordset, bliver du bare stående (og kommer ikke videre til næste række!) ...derfor får du en script timeout, eller du crasher serveren, hvis den ikke kan klare det.

nu ved jeg selvfølgelig ikke, om din html og øvrige aspkode fungerer, sådan at det hele står som det skal, når du udskriver hele recordsettet.
Avatar billede el-prebsi Nybegynder
15. april 2002 - 21:22 #3
uuups.. det kunne være det hjalp .--  to secs...
Avatar billede el-prebsi Nybegynder
15. april 2002 - 21:26 #4
Hehe... fedt nok.. tak for hjælpen kimiwan - skidtet ser ud til at virke perfekt.. så egentlig er jeg slet ikke så dum igen (pudser lige glorien)... skal jo bare lige huske de der skide movenext
je tjekker lige op omkring at det nu virker helt i overensstemmelse med det, det skulle, men I'll be back...
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:32 #5
ja, det er nok ikke sidste gang, du har glemt movenext.. men med tiden lærer du at opdage din fejl i løbet af 1-2 sekunder, når du loader siden med fejlen første gang ;o)
Avatar billede el-prebsi Nybegynder
15. april 2002 - 21:40 #6
skidtet virker nu... det var dog ikke helt rigtig med de movenext placeringer.. der mangler en... men det er ok

Sådan her er den endelige løsning:

<%
dim I, L(3), sqlmain, sqlsecond, restsecond

sqlmain = "SELECT DISTINCT mainkategori FROM kategori ORDER BY mainkategori"
set rest = cn.execute(sqlmain)
%>

<table>
<%
while not rest.eof
  for I = 1 to 3
    if not rest.eof then
      L(I) = rest("mainkategori")
      if I = 1 then
        response.write ("<tr>")
      end if
      response.write ("<td class=""headlist"">" & rest("mainkategori") & "</td>")
      if I = 3 then
        response.write ("</tr>")
      end if
    end if
    rest.movenext
  next

  for I = 1 to 3
    sqlsecond = "SELECT kategori FROM kategori WHERE mainkategori = '" & L(I) & "'"
    set restsecond = cn.execute(sqlsecond)
    if I = 1 then
      response.write ("<tr>")
    end if
    response.write ("<td class=""list"">")
    while not restsecond.eof
      response.write (restsecond("kategori") & "<br>")
      restsecond.movenext
    wend
    response.write ("</td>")
    if I = 3 then
      response.write ("</tr>")
    end if
  Next
rest.movenext
wend
%>

</table>
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:45 #7
tillykke :o) selvom jeg ikke helt kan se, hvordan du kunne tage halvdelen af pointene tilbage for det!! (?)
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