Ik ben bezig vanuit een database een dropdown list te vullen waaruit de bezoeker een keuze kan maken waarna de bijbehorende records zichtbaar worden.
Maar.. ik kom er niet uit.
Ik heb 2 tables gemaakt te weten:
De lijst vullen met records uit tblConsumerType lukt me met de volgende code:
So far so good, de volgende code volgt
Het eerst deel werkt goed, de lijst wordt netjes gevuld met alle velden uit de table. Alleen weet ik niet zeker of ik een onchange=GoUrl moet gebruiken of dat ik beter een <form> kan gebruiken?
Deel 2 van de code laat niet meer zien dan de 1 op 1 resultaten van de tabel tblSuppliers (id=1 is de eerste, id=2 is de tweede, etc.). Da's natuurlijk niet de bedoeling, ik moet een lus hebben waarin wordt gecheckt welke leveranciers nog meer van toepassing zijn. Moet ik dus een derde tabel maken?
De fout ligt ook in de database zelf, ik ben niet op de hoogte van welke relatie ik nu moet gebruiken. Het is toch een "one to many" relatie? immers, 1 leverancier kan meerdere consumertypen hebben. Hoe moet ik die relatie leggen in de SQL Server Enterprise Manager?
Maar.. ik kom er niet uit.
Ik heb 2 tables gemaakt te weten:
- tblSuppliers (met naw gegevens van leveranciers) en
- tblConsumerType (met zes typen consumers: consument, wederverkoper, zorginstelling, etc.)
De lijst vullen met records uit tblConsumerType lukt me met de volgende code:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <% ErrorMsg = OpenDatabase(Conn, DATABASE) If ErrorMsg <> "" Then Else If Id = "" Then Set Rs = Conn.Execute("SELECT * FROM tblConsumerType") If Rs.Eof Then Response.Write "Geen leveranciers gevonden." Else Response.Write "<select id=""SelectSupplier"" title=""Kies uw leverancier"" onchange=""GoUrl(this)"">" & vbCr Response.Write "<option value=""#"" selected>Maak uw keuze</option>" & vbCr Response.Write "<option>-----------------</option>" & vbCr While Not Rs.Eof Response.Write "<option value=""" & "default.asp" & "?id=" & Rs("ConsumerTypeID") & """>" & Rs("ConsumerTypeName") &_ "</option>" & vbCr Rs.MoveNext Wend Response.Write "</select>" End If Rs.Close Set Rs = Nothing |
So far so good, de volgende code volgt
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Else On Error Resume Next Set Rs = Conn.Execute("SELECT * FROM tblSuppliers WHERE SuppType1='Consument' AND IsPublish=1 AND (SuppID = " & Id & ")") If Err <> 0 Then Response.Write "Geen leveranciers gevonden..." End If On Error Goto 0 If Rs.Eof Then Response.Write "Geen leveranciers gevonden..." Else Response.Write "<h4>" & Rs("SuppName") & "</h4>" & vbCr Response.Write "<p class=""s11"">" & Rs("SuppAddress1") & "<br />" & vbCr Response.Write Rs("SuppAddress2") & "<br />" & vbCr Response.Write Rs("SuppPhone") & "<br />" & vbCr Response.Write Rs("SuppWeb") & "</p>" & vbCr Response.Write "<p class=""s11"">" & Rs("SuppDescrip") & "</p>" & vbCr End If Rs.Close Set Rs = Nothing End If End If %> |
Het eerst deel werkt goed, de lijst wordt netjes gevuld met alle velden uit de table. Alleen weet ik niet zeker of ik een onchange=GoUrl moet gebruiken of dat ik beter een <form> kan gebruiken?
Deel 2 van de code laat niet meer zien dan de 1 op 1 resultaten van de tabel tblSuppliers (id=1 is de eerste, id=2 is de tweede, etc.). Da's natuurlijk niet de bedoeling, ik moet een lus hebben waarin wordt gecheckt welke leveranciers nog meer van toepassing zijn. Moet ik dus een derde tabel maken?
De fout ligt ook in de database zelf, ik ben niet op de hoogte van welke relatie ik nu moet gebruiken. Het is toch een "one to many" relatie? immers, 1 leverancier kan meerdere consumertypen hebben. Hoe moet ik die relatie leggen in de SQL Server Enterprise Manager?
[ Voor 16% gewijzigd door BadVibes op 10-12-2004 15:43 . Reden: aiai, geen titel en ik kan het niet meer aanpassen... sorry! ]