Avatar billede ste Nybegynder
13. november 2003 - 15:09 Der er 15 kommentarer og
2 løsninger

Liste med skjulte felter.

Jeg er ved at lave en indholdsfortegnelse, som består af følgende resultater.
Der er kapitelnavn, afsnitsnavn, emnenavn. Nu er der flere emner en der er afsnit og der er flere afsnit end er kapitler. Når jeg henter resultatet fra databasen får jeg listet kapitel og afsnit lige så mange gange som der er emner. Jeg ville gerne ligesom i en rigtig indholdsfortegnelse, nøjes med kapitel en gang og så efterfølgende afsnit en gang med tilhørende underemner.
Kan det lade sig gøre. Håber nogen kan svare.
Avatar billede festy Nybegynder
13. november 2003 - 15:33 #1
Lav 3 udtræk fra databasen hvor du først laver en GROUP BY kapitelnavn, så GROUP BY afsnitnavn og så laver du et udtræk af alle emnenavn.

Select kapitelnavnfrom tabelnavn group by kapitelnavn;
Select afsnitnavn from tabelnavn group by afsnitnavn;
Select emnenavn from tabelnavn where afsnitnavn = "detasnit du lige har hentet";

lav det hele i 2 løkker.
Avatar billede festy Nybegynder
13. november 2003 - 16:09 #2
SQL = "Select kapitelnavnfrom tabelnavn group by kapitelnavn;"
SET RS = Conn.Execute(SQL)

Do while NOT RS.EOF
    Response.Write(RS("kapitelnavn"))
   
    subSQL = "Select afsnitnavn from tabelnavn where afsnitnavn = '"& RS("kapitelnavn") &"' group by afsnitnavn;"
    SET subRS = Conn.Execute(subSQL)

    Do while NOT subRS.EOF
        Response.Write(RS("afsnitnavn"))
   
        Select emnenavn from tabelnavn where afsnitnavn = '"& RS("afsnitnavn") &"';
    subRS.MoveNext
    loop
RS.MoveNext
loop
Avatar billede festy Nybegynder
13. november 2003 - 16:12 #3
Rettelse


SQL = "Select kapitelnavnfrom tabelnavn group by kapitelnavn;"
SET RS = Conn.Execute(SQL)

Do while NOT RS.EOF
    Response.Write(RS("kapitelnavn"))
   
    subSQL = "Select afsnitnavn from tabelnavn where afsnitnavn = '"& RS("kapitelnavn") &"' group by afsnitnavn;"
    SET subRS = Conn.Execute(subSQL)

    Do while NOT subRS.EOF
        Response.Write(RS("afsnitnavn"))
   
        subsubSQL = "Select emnenavn from tabelnavn where afsnitnavn = '"& RS("afsnitnavn") &"'";
        SET subsubRS = Conn.Execute(subsubSQL)

        Do while NOT subsubRS.EOF
            Response.Write(RS("emnenavn"))
        subsubRS.MoveNext
        loop
    subRS.MoveNext
    loop
RS.MoveNext
loop
Avatar billede ste Nybegynder
13. november 2003 - 17:37 #4
Mojn festy
Jeg har desværre ikke tid til at tjekke mere i aften. Men jeg tjekker i morgen tidlig. Tak for dit hurtige svar.
Avatar billede festy Nybegynder
13. november 2003 - 17:41 #5
np :-)
Avatar billede ste Nybegynder
13. november 2003 - 22:01 #6
Når ja.
Der er lige en opgave mere. Jeg har brug for at emne navnet danner et link ud fra det der returneres fra databasen. Jeg har aldrig prøvet at lave links med response.write, måske kan det ikke lade sig gøre. Normalt gør jeg det med <a href="<%=emnenavn%></a>, jeg håber denne forklaring ikke er for kringlet.
Avatar billede festy Nybegynder
13. november 2003 - 22:31 #7
Prøv det her:

<a href="<%=RS("emnenavn")%>"><%=RS("emnenavn")%></a>
Avatar billede festy Nybegynder
13. november 2003 - 22:36 #8
Er det en anden side emnenavn skal linke til?
Avatar billede festy Nybegynder
13. november 2003 - 22:52 #9
Hvis nu det er en anden side emnenavn skal linke til og siden har samme navn som emnenavnet og det også er en asp-fil, skal koden se således ud:

<a href="<%=RS("emnenavn")%>.asp"><%=RS("emnenavn")%></a>
Avatar billede ste Nybegynder
16. november 2003 - 21:52 #10
Jeg kan ikke umiddelbart få det til at virke.

Her er ASP koden som jeg har tilrettet den.
<html>
<head>
<title>Indholdsfortegnelse</title>

</head>

<body>
<%
' ADODB connection objektet
Set Conn = Server.CreateObject("ADODB.Connection")
' Husk at angive den rigtige sti til din database
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../fpdb/Miljodatabasenemnehaandbog.mdb")
' Åben databaseforbindelsen
Conn.Open DSN


SQL = "Select Kapitel from qryIndhold group by Kapitel;"
SET RS = Conn.Execute(SQL)

Do while NOT RS.EOF
    Response.Write(RS("Kapitel"))
   
    subSQL = "Select Afsnit from qryIndhold where Afsnit = '"& RS("Kapitel") &"' group by Afsnit;"
    SET subRS = Conn.Execute(subSQL)

    Do while NOT subRS.EOF
        Response.Write(RS("Afsnit"))
   
        subsubSQL = "Select Emne from qryIndhold where Afsnit = '"& RS("Afsnit") &"'";
        SET subsubRS = Conn.Execute(subsubSQL)

        Do while NOT subsubRS.EOF
            Response.Write(RS("Emne"))
        subsubRS.MoveNext
        loop
    subRS.MoveNext
    loop
RS.MoveNext
loop


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

</body>

</html>
Og her kommer SQL forespørgslen fra min acces database.

SELECT tblKapitelemne.KapitleId, [KapitelNr] & "." & [KapitelNavn] AS Kapitel, [AfsnitsNr] & "." & [AfsnitsNavn] AS Afsnit, [EmneNr] & "." & [EmneNavn] AS Emne, [tblLokation].[Lokation] & " " & [KapitelNR] & " " & [AfsnitsNr] & " " & [EmneNr] & "" & [Version] AS DokNr
FROM tblLokation INNER JOIN (tblKapitelemne INNER JOIN (tblAfsnitemne INNER JOIN tblEmne ON tblAfsnitemne.AfsnitsId = tblEmne.AfsnitsIdRef) ON tblKapitelemne.KapitleId = tblAfsnitemne.KapitelIdRef) ON tblLokation.LokId = tblKapitelemne.Lokation;

Jeg håber du stadig har mod på at hjælpe.
Avatar billede festy Nybegynder
16. november 2003 - 23:31 #11
Hvad er det der ikke virker er det stadig det med link eller noget andet?
Avatar billede ste Nybegynder
17. november 2003 - 08:12 #12
Jeg har ikke testet link delen endnu. Når jeg kalder siden som jeg har kaldt indhold.asp for jeg en fejlmelding.
Avatar billede ste Nybegynder
17. november 2003 - 08:14 #13
fEJLMEDLING ER SOM FØLGER.
HTTP 500 - Intern serverfejl
Internet Explorer
Avatar billede ste Nybegynder
17. november 2003 - 08:46 #14
Jeg har selv fundet følgende fejl.
subsubSQl sætningen sluttede forkert. anførsels tegnet og semikollonnet skulle byttes.
Nu returneres kapitelnavnet og ikke andet. Men det går da fremad, nu mangler jeg kun afsnittet og emnet. Håber du stadig er motiveret for at hjælpe.
Avatar billede ste Nybegynder
17. november 2003 - 10:09 #15
Jeg har fundet endnu en rettelse.
I Response.write (RS("Afsnit")) skulle det se således ud Response.write(subRS("Afsnit"))
Koden ser nu således ud.
<html>
<head>
<title>Indholdsfortegnelse</title>

</head>

<body>
<%
' ADODB connection objektet
Set Conn = Server.CreateObject("ADODB.Connection")
' Husk at angive den rigtige sti til din database
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../fpdb/Miljodatabasenemnehaandbog.mdb")
' Åben databaseforbindelsen
Conn.Open DSN

SQL = "Select Kapitel from qryIndhold group by Kapitel;"
SET RS = Conn.Execute(SQL)
%>
<b>
<%

Do while NOT RS.EOF
    Response.Write(RS("Kapitel"))
    %>
    </b>
    <br>
    <br>
    <%


subSQL = "Select Afsnit from qryIndhold where Afsnit = '"& RS("Kapitel") &"' group by Afsnit;"
SET subRS = Conn.Execute(subSQL)
%>
<b>
<%
    Do while NOT subRS.EOF
        Response.Write(subRS("Afsnit"))
        %>
        </b>
        <br>
        <%
subsubSQL = "Select Emne from qryIndhold where Afsnit = '"& subRS("Afsnit") &"';"
        SET subsubRS = Conn.Execute(subsubSQL)

        Do while NOT subsubRS.EOF
            Response.Write(subsubRS("Emne"))
            %>
            <br>
            <%
        subsubRS.MoveNext
        loop
 
     
  subRS.MoveNext
  loop
   
RS.MoveNext
loop
' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
</body>

</html>

Men nu udlæser den kun kapitlet. Jeg tror det er noger med where funktion. Hvis jeg fjerne denne where del udlæses også afsnit. Hvad er der galt.
Avatar billede festy Nybegynder
17. november 2003 - 11:14 #16
Hvis nu du indsætter værdier istedet for '"& RS("Kapitel") &"' og '"& subRS("Afsnit") &"', får du så afsnit og emner frem?
Avatar billede ste Nybegynder
18. november 2003 - 22:32 #17
Så er opgaven løst. Der var problemer med kriterierne. Der blev ikke indlæst nogle kriterier og derfør kunne forspørgslen heller ikke køre. Jeg vedlægger her mit endelig udspil og giver som et svar. Jeg vil ikke snyde for en del pointene men synes godt vi kan dele i porten, da jeg ikke havde løst opgaven uden din første løsning, men samtidig virkede det heller ikke fra start. Men tak for en lærerig process. Løsning er her.

<html>
<head>
<title>Indholdsfortegnelse</title>

</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="789" align="center">

<tr>
    <td width="85">
    <h4>Kapitel:</h4>
    </td>
    <td width="232">
    <h4 align="left">Afsnit</h4>
    </td>
    <td width="114">
    <h4 align="left">Dokument nr.</h4>
    </td>
    <td width="358">
    <h4>Captia nr.</h4>
    </td>
  </tr>

<%
' ADODB connection objektet
Set Conn = Server.CreateObject("ADODB.Connection")
' Husk at angive den rigtige sti til din database
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../fpdb/Miljodatabase.mdb")
' Åben databaseforbindelsen
Conn.Open DSN

SQL = "Select Kapitel from qryIndhold group by Kapitel;"
SET RS = Conn.Execute(SQL)

Do while NOT RS.EOF
    Kapitel =rs("Kapitel")
%>

   
   

       
<tr>
    <td width="317" colspan="2"><h3><%=Kapitel%></h3>
    <p><br></td>
    <td width="114">&nbsp;</td>
    <td width="358">&nbsp;</td>
  </tr>
   
   

       
      <%


subSQL = "Select Afsnit from qryIndhold where Kapitel = '"&RS("Kapitel")&"' group by Afsnit;"
SET subRS = Conn.Execute(subSQL)


    Do while NOT subRS.EOF
      Afsnit = subRs("Afsnit")
              %>
    <tr>
      <td width="85">&nbsp;<p>&nbsp;</p>
      <p>&nbsp;</td>
      <td width ="704" colspan="3"><h4><%=Afsnit%></h4><p></p><p></td>
    </tr> 
     
       
           
        <%
       
subsubSQL = "Select Emne, DokNr, Captia from qryIndhold where Afsnit = '"& subRS("Afsnit") &"';"
SET subsubRS = Conn.Execute(subsubSQL)

        Do while NOT subsubRS.EOF
            Emne = subsubRs("Emne")
            DokNr = subsubRs("DokNr")
            Captia = subsubRs("Captia")
    %>
             
   
    <tr>
    <td width="85">&nbsp;</td>
    <td width="232"><a href="http://polydoros/elps/showdocument.asp?systemkey=<%=Captia%>" title="Klik her for at se dokumentet">
    <p><i><%=Emne%></i></p>
    <p></p>
    <p></p></a></td>
    <td width="114"><%=DokNr%></td>
    <td width="358"><%=Captia%>&nbsp;<br></td>
    </tr>
    <tr>
    <td colspan="4" width="789">
   
    </td>

      </tr>
         
         
            <%
        subsubRS.MoveNext
        loop
 
       
    subRS.MoveNext
  loop

 
RS.MoveNext
loop
' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
</table>
</body>

</html>
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