[ASP] Parent-Child Relatie tonen met een Oracle DB

Pagina: 1
Acties:

  • FoxzMan
  • Registratie: September 2000
  • Laatst online: 01-03 20:35
Ik ben bezig voor school met een kleine ASP-webpage. Het is de bedoeling dat wij een op de ASP-webpage een Parent-Child relatie tonen.

Als Database gebruik ik Oracle 8i (8.1.7) Personal Edition, daarin heb ik 2 tabellen gemaakt namelijk Opleiding en Modulen.
De tabel Opleiding bestaat uit: Opleidingscode(PrimaryKey), Opleidingsnaam, Opleidingsduur en Opleidingstype.
De tabel Moduul bestaat uit: Moduulcode(PrimaryKey), Opleiding, Moduulnaam, Moduulcoordinator en Moduulstartblok.
De ForeignKey ligt op Opleiding uit de tabel Moduul naar Opleidingscode uit de tabel Opleiding.

Op het internet heb ik het een pagina gevonden waarin uitgelegt word hoe je een parent-child relatie moet tonen.

Ik heb de het master-script aangepast aan mijn database.
Hieronder de lap code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<%@ Language=VBScript %>
<html>
<head>
<title>Master Pagina</title>
</head>
<body background="Images/achter-licht.gif">
<h2 align="center">
Opleidingen van het Instituut Informatica en Informatiemanagement
</h2>
<p align="center">Klik op de opleidingscode voor de bij de opleiding horende modulen. <br>
</p>
<p align="center">
<script LANGUAGE="vbscript" RUNAT="Server">

'--Declare all the variables
Dim cn, rsOpleiding
Dim strConnect, strSQL, intCounter
Dim strFieldValue, strFieldName
Dim strHREF, strID
Dim intEmpID

    '--Create Objects    
    Set cn = Server.CreateObject("ADODB.Connection")

    '--Ensure that you have created Data Source Name for the database
    strConnect = "DSN=Oracle8i;uid=idt;pwd=idt"
    
    Call cn.Open(strConnect)
    
    '--Create Recordsets
    Set rsOpleiding = Server.CreateObject("ADODB.Recordset")
    
    strSQL = "SELECT Opleidingscode, Opleidingsnaam, Opleidingstype, Opleidingsduur from Opleiding;"

    '--Open Opleiding recordset
    Call rsOpleiding.Open(strSQL, cn, 0, 1)
    
    '--Write out data in tables via the submit forms
    Call Response.Write("<form action=""Master.asp"" method=""post"">")
    Call Response.Write("<p align=center>")
    Call Response.Write("</p>") 
    Call Response.Write("<Table border = 3 cellpadding=2 cellspacing=2>")
    Call Response.Write("<TD width=0 bgcolor=#800000>" & "<B><I><font color=#ffffff>Opleidingen</I></B>" & "</td>")
    Call Response.Write("<Tr>")
        
    '--Write out custom headings
        Call Response.Write("<TH>" & "<B>Code</B>" & "</TH>")       
        Call Response.Write("<TH>" & "<B>Naam</B>" & "</TH>")
        Call Response.Write("<TH>" & "<B>Duur</B>" & "</TH>")
        Call Response.Write("<TH>" & "<B>Type</B>" & "</TH>")   
        Call Response.Write("</Tr>")
 
    While(rsOpleiding.EOF = False)
    
        Call Response.Write("<Tr>")
    
        for intCounter = 0 to rsOpleiding.Fields.Count - 1
        'Write out field data.
            Call Response.Write("<TD width=10%>")
                strFieldName = rsOpleiding.Fields(intCounter).Name
                strFieldValue = rsOpleiding.Fields(intCounter).Value
                
                If(strFieldName = "Opleidingscode")Then
                '--This is the key (Master) field.
                '--We will want to make this field a link to the detail field
                '--We will create a URL and append the key to the URL in order
                '--to retrieve it on the Detail page using the
                '--Request.QueryString() method.
                '--Please Put your hosting address after the http.
                    
                    strHREF = "<A HREF=""" & "http://cc14301-b/idt/detail.asp?strID=" & strFieldValue & """>" & strFieldValue & "</A>"

                    Call Response.Write(strHREF)
                                
                ElseIf(IsNull(strFieldValue))Then
                
                '--The field is empty, just write out an HTML space.
                    call Response.Write("&nbsp;")
                Else
                    Call Response.Write(strFieldValue)
                End If
                                    
            Call Response.Write("</TD>")
        next        
        
        Call Response.Write("<Tr>")     
        
        rsOpleiding.MoveNext
        
    Wend
    
    Response.Write("</Table>")
    Response.Write("</Form>")   
    Set rsOpleiding = Nothing
    Set cn = Nothing 
Call Response.Write("</form>")  
</script>


</body>
</html>

Nu laat de pagina netjes de records zien, alleen wil ie van de opleidingscode, waar een primary key op staat, geen hyperlink maken.

Weet iemand wat ik verkeerd heb gedaan ?? Want ik zie de fout nergens.
Zou het kunnen komen omdat ik een Oracle DB gebruik en dat het daardoor neit werkt. Het lijkt me dat het op de een of andere manier moet kunnen. Kan iemand mij een kleine aanwijzing geven ?

edit:

kleine edit gedaan

-


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Nee lijkt me niet, maar kan je eens een een stukje van de output pasten, en dan met name het regeltje waarin de link wordt aangemaakt, ik vermoed dat er iets mis zit met je quotes, tenminste das meestal het geval met dit soort problemen, oracle zou niet moeten uitmaken, al kwam er een error uit de database zelfs dan zou waarschijnlijk de error in je link zitte :)

  • FoxzMan
  • Registratie: September 2000
  • Laatst online: 01-03 20:35
Ik heb het probleem al gevonden.
Het bleek dat ik, in het gedeelte waar ik de hyperlink maak, de opleidingscode met hoofdletters moest schrijven.

Case-sensitive dus.

Toch nog bedankt voor de moeite.

-


  • FoxzMan
  • Registratie: September 2000
  • Laatst online: 01-03 20:35
De Master-Pagina:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
%@ Language=VBScript %>
<html>
<head>
<title>Master Pagina</title>
</head>
<body background="Images/achter-licht.gif">
<h2 align="center">
Opleidingen van het Instituut Informatica en Informatiemanagement
</h2>
<p align="center">Klik op de opleidingscode voor de bij de opleiding horende modulen. <br>
</p>
<p align="center">
<script LANGUAGE="vbscript" RUNAT="Server">

'--Declare all the variables
Dim cn, rsOpleiding
Dim strConnect, strSQL, intCounter
Dim strFieldValue, strFieldName
Dim strHREF, strID
Dim intEmpID

    '--Create Objects    
    Set cn = Server.CreateObject("ADODB.Connection")

    '--Ensure that you have created Data Source Name for the database
    strConnect = "DSN=Oracle8i;uid=idt;pwd=idt"
    
    Call cn.Open(strConnect)
    
    '--Create Recordsets
    Set rsOpleiding = Server.CreateObject("ADODB.Recordset")
    
    strSQL = "SELECT Opleidingscode, Opleidingsnaam, Opleidingstype, Opleidingsduur from Opleiding;"

    '--Open Opleiding recordset
    Call rsOpleiding.Open(strSQL, cn, 0, 1)
    
    '--Write out data in tables via the submit forms
    
    Call Response.Write("</p>") 
    Call Response.Write("<Table border = 3 cellpadding=2 cellspacing=2>")
    Call Response.Write("<TD width=0 bgcolor=#800000>" & "<B><I><font color=#ffffff>Opleidingen</I></B>" & "</td>")
    Call Response.Write("<Tr>")
        
    '--Write out custom headings
        Call Response.Write("<TH>" & "<B>Code</B>" & "</TH>")       
        Call Response.Write("<TH>" & "<B>Naam</B>" & "</TH>")
        Call Response.Write("<TH>" & "<B>Duur</B>" & "</TH>")
        Call Response.Write("<TH>" & "<B>Type</B>" & "</TH>")   
        Call Response.Write("</Tr>")
 
    While(rsOpleiding.EOF = False)
    
        Call Response.Write("<Tr>")
    
        for intCounter = 0 to rsOpleiding.Fields.Count - 1
        'Write out field data.
            Call Response.Write("<TD width=20%>")
                strFieldName = rsOpleiding.Fields(intCounter).Name
                strFieldValue = rsOpleiding.Fields(intCounter).Value
            
                If(strFieldName = "OPLEIDINGSCODE")Then
                    strHREF = "<A HREF=""http://cc14301-b/idt/detail.asp?strID=" & strFieldValue & """>" & strFieldValue & "</A>"

            

                    Call Response.Write(strHREF)
                                
                ElseIf(IsNull(strFieldValue))Then
                
                '--The field is empty, just write out an HTML space.
                    call Response.Write("&nbsp;")
                    
                Else
                    Call Response.Write(strFieldValue)
                End If
                                    
            Call Response.Write("</TD>")
        next        
        
        Call Response.Write("<Tr>")     
        
        rsOpleiding.MoveNext
        
    Wend
    
    Response.Write("</Table>")
    Response.Write("</Form>")   
    Set rsOpleiding = Nothing
    Set cn = Nothing 
Call Response.Write("</form>")  
</script>
</body>
</html>

En de Detail-pagina:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<%@ Language=VBScript %>
<html>
<title>Detail Pagina</title>
</head>
<body background="Images/achter-licht.gif">

<h2 align="center">
Opleidingsmodulen
</h2>

<p align="center">
Please Press the browser Back Button to go back to <a href="master.asp"> Opleiding
</a> Page
</p>
<br>
<script LANGUAGE="vbscript" RUNAT="Server">
'--Declare variables
Dim cn, rs, drs
Dim strConnect, strSQL, intCounter, strSQL2
Dim intOpleidingscode
    
    intOpleidingscode = CInt(Request.QueryString("strID"))
    
    Set cn = Server.CreateObject("ADODB.Connection")
    strConnect = "DSN=Oracle8i;uid=idt;pwd=idt"
    
    Call cn.Open(strConnect)
    
    '--Create Multiple Recordsets
    set rs2 = Server.CreateObject("ADODB.Recordset")
    
    '--The SQL Statement
    strSQL2 = "SELECT * FROM MODUUL  WHERE OPLEIDING='" & intOpleidingscode & "'"
    Call rs2.Open(strSQL2, strConnect, 0, 1)
    
Response.Write "&nbsp;"
Response.Write "&nbsp;"
        '--Set drs = rs("Opleidingsmodulen").value  
        Call Response.Write("<Table border = 3 cellpadding=2 cellspacing=2>")
        Call Response.Write("<TD width=0 bgcolor=#800000>" & "<B><I><font color=#ffffff>Opleidings Modulen</I></B>" & "</td>")
        Call Response.Write("<Tr>")

'--Write out Custom Headings
        Call Response.Write("<TH>" & "<B>Code</B>" & "</TH>")       
        Call Response.Write("<TH>" & "<B>Opl_Code</B>" & "</TH>")
        Call Response.Write("<TH>" & "<B>Naam</B>" & "</TH>")   
        Call Response.Write("<TH>" & "<B>Coordinator</B>" & "</TH>")
        Call Response.Write("<TH>" & "<B>Startblok</B>" & "</TH>")  
        Call Response.Write("</Tr>")

While(rs2.EOF=False) 
        '--Write out all available data
        Call Response.Write("<Tr>")
        Call Response.Write("<td>" & rs2.Fields("MODUUL") & "</td>")
        Call Response.Write("<td>" & rs2.Fields("OPLEIDING") & "</td>")
        Call Response.Write("<td>" & rs2.Fields("MODUULNAAM") & "</td>")
        Call Response.Write("<td>" & rs2.Fields("MODUULCOORDINATOR") & "</td>")
        Call Response.Write("<td>" & rs2.Fields("MODUUL_STARTBLOK") & "</td>")
        Call Response.Write("</Tr>")
        
rs2.MoveNext
        
WEND 
    Call Response.Write("</Table>")

    Set rs2 = Nothing
    Set cn = Nothing 
    
</script>

</body>
</html>

Dit zijn uiteindelijk de scripts die ik heb gebruikt. Mochten er mensen er belang bij hebben dan kunnen ze die zo gebruiken.

-