Ik zit met een probleempje, ik heb de volgende code (zie hieronder)
(* heb het zo goed mogelijk proberen uit te lijnen)
Doel van de code:
Controleren of een gebruiker een bepaald type heeft geselecteerd. Vervolgens deze weer te selecteren als er een fout optreedt. Bijv. de gebruiker heeft niet alle velden ingevoerd en wordt terug gestuurd naar het invul scherm. De gebruiker had bijvoobeeld de typen 1 en 3 van de 10 geselecteerd en dus moeten deze opnieuw geselecteerd worden wanneer er terug wordt gegaan naar het vorige scherm.
De wijze van checken:
De gekozen waarden van de gebruiker worden in een array gezet. Vervolgens worden de waarden van de gebruiker vergeleken met de typen (=recordset). Een recordset wordt dus vergeleken met een array.
Probleem:
De bovenstaande code gaat goed zolang de betreffende array maar 1 waarde bevat. Bevat deze meerdere waarden dan worden het aantal type lijsten maal array waarden weergegeven. Dit houdt in dat als de array 2 waarden bevat een lijst met typen weergegeven wordt, waarvan het veld van de eerste array (dus 3) wel geselecteerd wordt. En vervolgens wordt er nogmaals een tweede type lijst weergegeven (waarvan geen enkele is geselecteerd).
Bevindingen:
Ben al een tijdje aan het kijken en dacht zelf tot de volgende conclusie te zijn gekomen. Onafhankelijk of ik eerste een array doe met daarin een while went lus of omgekeerd dat eerst de array wordt uitgelezen
Want als ik de array uitlees gaat mijn code de mist in. Als ik gewoon door de records lus en zeg bijvoorbeeld selecteer vak waar ID = 5 dan gaat het goed. Maar doe ik dezelfde code, maar sluit deze gewoon in, in een array (waar verder helemaal niets gechecked wordt, alleen array wordt uitgelezen) dan geeft ie hetzelfde probleem als bij "Probleem:". Dus het aantal weergegeven typelijsten gelijk is aan het aantal array waarden.
Vraag:
Kunnen jullie me misschien helpen, misschien zit er gewoon een fout in de code en zie ik hem nu ff niet (komt wel eens vaker voor). Of klopt het dus dat een array uitlezen eerst wordt uitgevoerd (dus for next loop) en dan later een while went?
Oplossing:
Ik probeer nu alle typen ook in een array te zetten en dus een array met een array te vergelijken om te kijken of het zo wel werkt.
(*Hoop dat mijn vraag een beetje duidelijk is)
(* heb het zo goed mogelijk proberen uit te lijnen)
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
| rsTypen.MoveFirst
While not rsTypen.EOF
%>
<tr>
<td width=40%>
<table border=0 width=70% align=right>
<tr>
<td>
</td>
</tr>
</table>
</td>
<td>
<%
'Hier wordt gekeken of de gebruiker vakken geselecteerd heeft.
If not blnProductType = "" then
'Zijn er vakken geselecteerd wordt de onderstaande lus weergegeven.
For i=0 to (Ubound(arrProductType))
'Hier wordt door alle array waarden gelust.
If arrProductType(i) = cStr(rsTypen("TypeID")) then
%>
<input type=checkbox checked value=<%=rsTypen("TypeID")%> name=chkbTypen>
<font face=Arial size=3 tabindex=10>
<%=rsTypen("TypeCode")%>
</font>
<%
Else
%>
<input type=checkbox value=<%=rsTypen("TypeID")%> name=chkbTypen>
<font face=Arial size=3 tabindex=10>
<%=rsTypen("TypeCode")%>
</font>
<%
End if
Next
Else
%>
<input type=checkbox value=<%=rsTypen("TypeID")%> name=chkbTypen>
<font face=Arial size=3 tabindex=10>
<%=rsTypen("TypeCode")%>
</font>
<%
End if
%>
</td>
</tr>
<%
rsTypen.MoveNext
Wend |
Doel van de code:
Controleren of een gebruiker een bepaald type heeft geselecteerd. Vervolgens deze weer te selecteren als er een fout optreedt. Bijv. de gebruiker heeft niet alle velden ingevoerd en wordt terug gestuurd naar het invul scherm. De gebruiker had bijvoobeeld de typen 1 en 3 van de 10 geselecteerd en dus moeten deze opnieuw geselecteerd worden wanneer er terug wordt gegaan naar het vorige scherm.
De wijze van checken:
De gekozen waarden van de gebruiker worden in een array gezet. Vervolgens worden de waarden van de gebruiker vergeleken met de typen (=recordset). Een recordset wordt dus vergeleken met een array.
Probleem:
De bovenstaande code gaat goed zolang de betreffende array maar 1 waarde bevat. Bevat deze meerdere waarden dan worden het aantal type lijsten maal array waarden weergegeven. Dit houdt in dat als de array 2 waarden bevat een lijst met typen weergegeven wordt, waarvan het veld van de eerste array (dus 3) wel geselecteerd wordt. En vervolgens wordt er nogmaals een tweede type lijst weergegeven (waarvan geen enkele is geselecteerd).
Bevindingen:
Ben al een tijdje aan het kijken en dacht zelf tot de volgende conclusie te zijn gekomen. Onafhankelijk of ik eerste een array doe met daarin een while went lus of omgekeerd dat eerst de array wordt uitgelezen
Want als ik de array uitlees gaat mijn code de mist in. Als ik gewoon door de records lus en zeg bijvoorbeeld selecteer vak waar ID = 5 dan gaat het goed. Maar doe ik dezelfde code, maar sluit deze gewoon in, in een array (waar verder helemaal niets gechecked wordt, alleen array wordt uitgelezen) dan geeft ie hetzelfde probleem als bij "Probleem:". Dus het aantal weergegeven typelijsten gelijk is aan het aantal array waarden.
Vraag:
Kunnen jullie me misschien helpen, misschien zit er gewoon een fout in de code en zie ik hem nu ff niet (komt wel eens vaker voor). Of klopt het dus dat een array uitlezen eerst wordt uitgevoerd (dus for next loop) en dan later een while went?
Oplossing:
Ik probeer nu alle typen ook in een array te zetten en dus een array met een array te vergelijken om te kijken of het zo wel werkt.
(*Hoop dat mijn vraag een beetje duidelijk is)