Toon posts:

[asp] zoeken met pulldown menu

Pagina: 1
Acties:
  • 63 views sinds 30-01-2008

Verwijderd

Topicstarter
ik doorzoek een access database mbv een pulldown menu.
dus je maakt een keuze uit de selecties, klikt op de knop zoeken
en dan wil ik de resultaten tonen op het scherm.

in mijn geval heb ik een medewerker gekoppeld aan een kennisgebied
aan de hand van een koppeltabel. een medewerker kan meerdere
kennisgebieden hebben en andersom.

het werkt in principe goed, alleen toont hij maar 1 resultaat. volgens
mij dus ook de 1e hit die hij vindt, geeft hij die op scherm. ook al zijn
er meerdere medewerkers gekoppeld aan dat gebied, toont hij
toch 1 resultaat.

hieronder de relevante asp code + querie:

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
102
<%
Dim objDC, objRS

' Create and establish data connection
Set objDC = Server.CreateObject("ADODB.Connection")
objDC.ConnectionTimeout = 15
objDC.CommandTimeout = 30

'Use this line to use Access
objDC.Open "DBQ=" & Server.MapPath("db\kenniskaart.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;MaxBufferSize=8192;Threads=20;", "", ""


' Create recordset and retrieve values using the open connection
Set objRS = Server.CreateObject("ADODB.Recordset")
' Opening record set with a forward-only cursor (the 0) and in read-only mode (the 1)

' If a request for a specific id comes in, then do it o/w just show pulldown
If Len(Request.QueryString("dbo_kennisgebied.kennisgebiedId")) <> 0 Then
    ' request record for requested id
    objRS.Open "SELECT * FROM ((((dbo_kennisgebied INNER JOIN dbo_kt_mk ON dbo_kennisgebied.kennisgebiedId = dbo_kt_mk.kennisgebiedId) INNER JOIN dbo_medewerker ON dbo_kt_mk.medewerkerId = dbo_medewerker.medewerkerId) INNER JOIN dbo_afdeling ON dbo_medewerker.afdelingId = dbo_afdeling.afdelingId) INNER JOIN dbo_functie ON dbo_medewerker.functieId = dbo_functie.functieId) INNER JOIN dbo_sector ON dbo_medewerker.sectorId = dbo_sector.sectorId WHERE dbo_kennisgebied.kennisgebiedId = " & Replace(Request.QueryString("dbo_kennisgebied.kennisgebiedId"), "'", "''"), objDC, 0, 1
    ' Show selected record
    If Not objRS.EOF Then
        objRS.MoveFirst
        %>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
    <td><b><font face="Verdana" size="2"><%= objRS.Fields("aanhef").Value %> <%= objRS.Fields("titel").Value %> <%= objRS.Fields("tussenvoegsel").Value %> <%= objRS.Fields("achternaam").Value %>, <%= objRS.Fields("voorletters").Value %></font></b><br>[img]"<%=[/img]" align="left" border="1" bordercolor="#000000"></td>
</tr>
<tr>
    <td><table border="0" cellspacing="0" cellpadding="0">
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Roepnaam:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("roepnaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Functie:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("functienaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Sector/Onderdeel:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("sectornaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Afdeling:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("afdelingnaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Kamernummer:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("kamernummer").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Telefoon:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("telefoonnummer1").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>E-mail:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("emailadres1").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Kennisgebied:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("kennisgebied").Value %></font></td>
</tr>
    </table>

        <%
    End If
    objRS.Close
End If

objRS.Open "dbo_kennisgebied", objDC, 0, 1
' Loop through recordset and display results
If Not objRS.EOF Then
    objRS.MoveFirst
    ' the form below calls this file only this time with an id in the QueryString
    %>
    <form action="zoekopkennisgebied2.asp" method="get">
    <select name="dbo_kennisgebied.kennisgebiedId">
        <option>- - > Selecteer een kennisgebied < - -</option>
    <%
    ' Continue until we get to the end of the recordset.
    Do While Not objRS.EOF
        ' For each record we create a option tag and set it's value to the employee id
        ' The text we set to the employees first name combined with a space and then their last name
        %>
        <option value="<%= objRS.Fields("kennisgebiedId") %>"><%= objRS.Fields("kennisgebied") %></option>
        <%
    ' Get next record
    objRS.MoveNext
    Loop
    %>
    </select>
    <input type="Submit" value="Zoeken" class="borderbutton" />
    </form>
    <%
End If

' Close Data Access Objects and free DB variables
objRS.Close
Set objRS =  Nothing
objDC.Close
Set objDC = Nothing
%>


iemand idee?

  • Tranzity
  • Registratie: Januari 2001
  • Niet online
Volgens mij moet je tabel in een loop 25~63

Verwijderd

Topicstarter
jep ik heb een Do While loop om de resultaten tabel gezet.

het werkt nu.

Verwijderd

Topicstarter
ik heb een do while loop ingesteld voor de resultatentabel,

zie onderstaande 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
102
103
104
105
106
107
<%
Dim objDC, objRS

' Create and establish data connection
Set objDC = Server.CreateObject("ADODB.Connection")
objDC.ConnectionTimeout = 15
objDC.CommandTimeout = 30

'Use this line to use Access
objDC.Open "DBQ=" & Server.MapPath("db\kenniskaart.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;MaxBufferSize=8192;Threads=20;", "", ""


' Create recordset and retrieve values using the open connection
Set objRS = Server.CreateObject("ADODB.Recordset")
' Opening record set with a forward-only cursor (the 0) and in read-only mode (the 1)

' If a request for a specific id comes in, then do it o/w just show pulldown
If Len(Request.QueryString("dbo_kennisgebied.kennisgebiedId")) <> 0 Then
    ' request record for requested id
    objRS.Open "SELECT * FROM ((((dbo_kennisgebied INNER JOIN dbo_kt_mk ON dbo_kennisgebied.kennisgebiedId = dbo_kt_mk.kennisgebiedId) INNER JOIN dbo_medewerker ON dbo_kt_mk.medewerkerId = dbo_medewerker.medewerkerId) INNER JOIN dbo_afdeling ON dbo_medewerker.afdelingId = dbo_afdeling.afdelingId) INNER JOIN dbo_functie ON dbo_medewerker.functieId = dbo_functie.functieId) INNER JOIN dbo_sector ON dbo_medewerker.sectorId = dbo_sector.sectorId WHERE dbo_kennisgebied.kennisgebiedId = " & Replace(Request.QueryString("dbo_kennisgebied.kennisgebiedId"), "'", "''"), objDC, 0, 1
    ' Show selected record
    Do While Not objRS.EOF 
        %>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
    <td><b><font face="Verdana" size="2"><%= objRS.Fields("aanhef").Value %> <%= objRS.Fields("titel").Value %> <%= objRS.Fields("tussenvoegsel").Value %> <%= objRS.Fields("achternaam").Value %>, <%= objRS.Fields("voorletters").Value %></font></b><br>[img]"<%=[/img]" align="left" border="1" bordercolor="#000000"></td>
</tr>
<tr>
    <td><table border="0" cellspacing="0" cellpadding="0">
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Roepnaam:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("roepnaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Functie:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("functienaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Sector/Onderdeel:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("sectornaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Afdeling:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("afdelingnaam").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Kamernummer:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("kamernummer").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Telefoon:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("telefoonnummer1").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>E-mail:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("emailadres1").Value %></font></td>
</tr>
<tr>
        <td style="width: 50mm"><font face="Verdana" size="1"><b>Kennisgebied:</b></font></td>
    <td style="width: 100mm"><font face="Verdana" size="1"><%= objRS.Fields("kennisgebied").Value %></font></td>
</tr>
    

        <%
    
    objRS.MoveNext
Loop
%>
</table>
<%
End If


objRS.Open "dbo_kennisgebied", objDC, 0, 1
' Loop through recordset and display results

If Not objRS.EOF Then
    objRS.MoveFirst
    ' the form below calls this file only this time with an id in the QueryString
    %>
    <form action="test3.asp" method="get">
    <select name="dbo_kennisgebied.kennisgebiedId">
        <option>- - > Selecteer een kennisgebied < - -</option>
    <%
    ' Continue until we get to the end of the recordset.
    Do While Not objRS.EOF
        ' For each record we create a option tag and set it's value to the employee id
        ' The text we set to the employees first name combined with a space and then their last name
        %>
        <option value="<%= objRS.Fields("kennisgebiedId") %>"><%= objRS.Fields("kennisgebied") %></option>
        <%
    ' Get next record
    objRS.MoveNext
    Loop
    %>
    </select>
    <input type="Submit" value="Zoeken" class="borderbutton" />
    </form>
    <%
End If

' Close Data Access Objects and free DB variables
objRS.Close
Set objRS =  Nothing
objDC.Close
Set objDC = Nothing
%>


ik krijg nu deze error:

ADODB.Recordset error '800a0e79'

Operation is not allowed when the object is open.

/stagevb/test3.asp, line 168

line 168 is overeenkomstig met de regel die begint met:

objRS.Open "dbo_kennisgebied", objDC, 0, 1

hoe los ik dit op?

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Lijkt me niet erg moeilijk met die foutmelding: je recordset is nog open en die probeer je nog een keer te openen. Gaat niet lukken dus. Maar dat had je zelf ook wel kunnen vinden met wat moeite, toch?

Verwijderd

Topicstarter
ja ik zie het. * stom * was me niet opgevallen.
lastig als je heel de dag achter dreamweaver zit.

Verwijderd

Topicstarter
ik werk nu met een ander script:

hier de asp code zonder layout

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
<%
Set objDC = Server.CreateObject("ADODB.Connection")
objDC.Open "DBQ=" & Server.MapPath("db\kenniskaart.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;MaxBufferSize=8192;Threads=20;", "", ""

Set objRS = objDC.Execute("SELECT afstudeerrichting FROM dbo_afstudeerrichting ORDER BY afstudeerrichting ASC")
%>

<b><font face="Verdana" size="2" color="#000000">Selecteer een afstudeerrichting:</font></b>
    <FORM METHOD="POST" NAME="Form1" ACTION="test.asp">
    <p align="left">
    <SELECT NAME="afstudeerrichting" SIZE="1" ONCHANGE=Form1.submit()>
        <option selected><% = Request.Form("afstudeerrichting") %></option>
    <%
    ' Continue until we get to the end of the recordset.
    Do Until objRS.EOF
        ' For each record we create a option tag and set it's value to the countr
        %>
        <OPTION><%= objRS("afstudeerrichting") %></OPTION>
        <%
    ' Get next record
    objRS.MoveNext
    Loop
    %>
    </SELECT> </p>
      </FORM>
    <%

' Close Data Access Objects and free DB variables
objRS.Close
Set objRS =  Nothing
objDC.Close
Set objDC = Nothing
%>

<!-- Display the records -->


<% 
'Make sure we have submitted a city and don't show results until we do
IF Request.Form("afstudeerrichting") = "" Then
Else
Set objDC = Server.CreateObject("ADODB.Connection")
objDC.Open "DBQ=" & Server.MapPath("db\kenniskaart.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;MaxBufferSize=8192;Threads=20;", "", ""

Set objRS = objDC.Execute("Select * FROM dbo_sector AS dbo_sector_1, dbo_sector INNER JOIN ((dbo_afdeling INNER JOIN dbo_medewerker ON dbo_afdeling.afdelingId = dbo_medewerker.afdelingId) INNER JOIN dbo_opleiding ON dbo_medewerker.medewerkerId = dbo_opleiding.medewerkerId) ON dbo_sector.sectorId = dbo_medewerker.sectorId WHERE afstudeerrichting = '" & Request.Form("afstudeerrichting") & "'")

'Loop through the database and assign the appropriate values to variables
'that we will use later

Do Until objRS.EOF
soortOpleiding = objRS("soortOpleiding")
begindatum = objRS("begindatum")
einddatum = objRS("einddatum")
omschrijving = objRS("omschrijving")
aanhef = objRS("aanhef")
titel = objRS("titel")
tussenvoegsel = objRS("tussenvoegsel")
achternaam = objRS("achternaam")
voorletters = objRS("voorletters")
roepnaam = objRS("roepnaam")
kamernummer = objRS("kamernummer")
telefoonnummer1 = objRS("telefoonnummer1")
emailadres1 = objRS("emailadres1")

objRS.MoveNext
Loop

objRS.Close
Set objRS = Nothing
objDC.Close
Set objDC = Nothing
%>
      </div>
<p align="left"><b><font face="Verdana" size="2" color="#000000">Zoekresulta(a)t(en) in afstudeerrichting: </font>
<font face="Arial" size="2" color="#A3006D"> <% Response.Write afstudeerrichting %> </font></b><br><br>
<br>
<font face="Arial" size="1" color="#000000">
<%

'Set up the display of the record
Response.Write "Soort opleiding: " & soortOpleiding & "<br>"
Response.Write "Begindatum: " & begindatum & "<br>"
Response.Write "Einddatum: " & einddatum & "<br>"
Response.Write "Omschrijving: " & omschrijving & "<br>"
Response.Write "Aanhef: " & aanhef & "<br>"
Response.Write "Titel: " & titel & "<br>"
Response.Write "Tussenvoegsel: " & tussenvoegsel & "<br>"
Response.Write "Achternaam: " & achternaam & "<br>"
Response.Write "Voorletters: " & voorletters & "<br>"
Response.Write "Roepnaam: " & roepnaam & "<br>"
Response.Write "Kamernummer: " & kamernummer & "<br>"
Response.Write "Telefoon: " & telefoonnummer1 & "<br>"
Response.Write "E-mail: " & emailadres1

End IF
%>


doe ik iets fout in de loop aanroep?
ik krijg namelijk maar 1 resultaat bij een keuze uit de selectiebox,
terwijl ik bij sommige zeker weet dat er meer dan 1 relaties zijn.

meerdere werknemers aan dezelfde afstudeerrichting...

iemand idee?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Dit wordt nu een 'wie kan mijn code debuggen'-topic.

Om te beginnen kan je alleen je relevante code posten; ik kan me niet voorstellen dat je probleem niet is te centraliseren tot 15 regels code. We hebben echt geen 90+ regels nodig en zorgt er voor dat de meeste mensen ontzettend snel je topic wegklikken.

Ten tweede kunnen we hier weinig mee. Je zult zelf in de code moeten duiken, isoleren waar het probleem zit en dan gaan kijken waar de fout zit. Hoeveel records krijg je terug bij je SQL Statement? Wat gebeurd er als je hem met MS Access uitvoert? Hoe ziet je SQL Statement er uit?

Verder is het vrij logisch dat je maar 1 resultaat er uit krijgt. Even wat dummy code neerzetten:
ASP:
1
2
3
4
5
6
7
Dim strTest
strTest = "Dit"
strTest = "gaat"
strTest = "niet"
strTest = "helemaal"
strTest = "goed"
Response.Write strTest

Je mag nu voor jezelf nagaan welke waarde er op het scherm gezet wordt. Vertaal dit naar je eigen code en je weet het probleem in je eigen code.

Dit topic gaat in ieder geval zo dicht.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.