[Access] Combobox afhankelijk van gebruiker invoer.

Pagina: 1
Acties:

  • Sergis WM
  • Registratie: Juli 2004
  • Laatst online: 21-02-2023
Ik heb een tabel met 3 produkten, I, II en III.

Ik heb drie tabellen met eigenschappen (in dit geval kleuren) voor elk produkt één. (Er zijn geen relaties)

Ik heb ook een formulier met twee ComboBoxen erop waarop ik uit ComboBox0 een produkt I, II en III kan kiezen. Als in deze box een keuze is gemaakt moet in de volgende ComboBox de bijbehorende tabel worden geladen. Hier gaat het mis.

Kies ik op het formulier in ComboBox0 produkt I dan wordt in ComboBox2 de juiste tabel KleurI geladen. Kies ik voor produktII dan gaat het ook goed. Daarna wordt ComboBox2 echter willekeurig (denk ik) geladen.

ComboBox2 (Waarom is het trouwens geen ComboBox1 geworden?) reageert dus wel op ComboBox0 alleen nog niet op de manier die ik wil.

Hier volgt de 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
Private Sub Combo0_BeforeUpdate(Cancel As Integer)

Dim l As Long
l = Forms(Produkt_Kleur).Controls(ControlName).ListIndex

If l = 0 Then MsgBox ("Test0") 'testbox
If l = 1 Then MsgBox ("Test1")
If l = 2 Then MsgBox ("Test2")

End Sub

Private Sub Combo2_BeforeUpdate(Cancel As Integer)

    Dim l As Long
    Dim cbo(1 To 3) As ComboBox
        
    Set cbo(1) = Me!Combo2
    Set cbo(2) = Me!Combo2
    Set cbo(3) = Me!Combo2

l = Forms(Produkt_Kleur).Controls(ControlName).ListIndex

    If l = 0 Then
    With cbo(1)
        .RowSourceType = "Table/Query"
        .RowSource = "KleurI"
        .ColumnCount = 1
    End With
    End If
    
    If l = 1 Then
    With cbo(2)
        .RowSourceType = "Table/Query"
        .RowSource = "KleurII"
        .ColumnCount = 1
    End With
    End If
    
    If l = 2 Then
    With cbo(3)
        .RowSourceType = "Table/Query"
        .RowSource = "KleurIII"
        .ColumnCount = 1
    End With
    End If
    
End Sub


Als ik in het Row Source veld van ComboBox2 een tabel KleurX in vul dan geeft ie dus de kuren. Vul ik hier niks dan dan blijft ComboBox2 leeg.

Wat gaat er mis?

[ Voor 75% gewijzigd door Sergis WM op 26-08-2004 17:40 ]


Acties:
  • 0 Henk 'm!

  • Sergis WM
  • Registratie: Juli 2004
  • Laatst online: 21-02-2023
Haa, nog een tijd aan 't klooien geweest en nu doet ie het met de volgende 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
Private Sub Combo0_BeforeUpdate(Cancel As Integer)

Dim l As Long
        
l = Forms!Produkt_Kleur!.Combo0.ListIndex

    If l = 0 Then
    Forms!Produkt_Kleur!Combo2.RowSource = "KleurI"
    Forms!Produkt_Kleur!Combo2.RowSourceType = "Table/Query"
    Forms!Produkt_Kleur!Combo2.ColumnCount = 1
    End If
            
    If l = 1 Then
    Forms!Produkt_Kleur!Combo2.RowSourceType = "Table/Query"
    Forms!Produkt_Kleur!Combo2.RowSource = "KleurII"
    Forms!Produkt_Kleur!Combo2.ColumnCount = 1
    End If
    
    If l = 2 Then
    Forms!Produkt_Kleur!Combo2.RowSourceType = "Table/Query"
    Forms!Produkt_Kleur!Combo2.RowSource = "KleurIII"
    Forms!Produkt_Kleur!Combo2.ColumnCount = 1
    End If
    
   
End Sub

Als hier nog wat aan te verbeteren is hoor ik 't graag.

Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 21:46
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
l = Forms(Produkt_Kleur).Controls(ControlName).ListIndex

If l = 0 Then
Forms!Produkt_Kleur!Combo2.RowSource = "KleurI"
Forms!Produkt_Kleur!Combo2.RowSourceType = "Table/Query"
Forms!Produkt_Kleur!Combo2.ColumnCount = 1
End If
        
If l = 1 Then
Forms!Produkt_Kleur!Combo2.RowSourceType = "Table/Query"
Forms!Produkt_Kleur!Combo2.RowSource = "KleurII"
Forms!Produkt_Kleur!Combo2.ColumnCount = 1
End If

If l = 2 Then
Forms!Produkt_Kleur!Combo2.RowSourceType = "Table/Query"
Forms!Produkt_Kleur!Combo2.RowSource = "KleurIII"
Forms!Produkt_Kleur!Combo2.ColumnCount = 1
End If

Ik zie een hoop redundante code. Je gebruikt bijna 3 identieke IF statements. Zou het zelf als volgt oplossen:

code:
1
2
3
4
5
6
7
8
9
Dim kleur(2) As String
kleur(0) = "kleur I"
kleur(1) = "kleur II"
kleur(2) = "kleur III"

l = Forms(Produkt_Kleur).Controls(ControlName).ListIndex
Forms!Produkt_Kleur!Combo2.RowSource = kleur(l)
Forms!Produkt_Kleur!Combo2.RowSourceType = "Table/Query"
Forms!Produkt_Kleur!Combo2.ColumnCount = 1

It’s nice to be important but it’s more important to be nice