Ik heb in Access een formulier met daarop een multiselect listbox. Die listbox bevat een aantal categorieën. De namen van die categorieën worden uit een apparte tabel gehaald.
De combinatie van categorieën wordt opgeslagen in één veld van mijn database. Daartoe heb ik iedere categorie een waarde meegegeven. Die waarden lopen van 1, 2, 4, 8, 16 , 32, 64 etc. Dus als bv de eerste en de derde categorie geselecteerd zijn, dan wordt de waarde van deze combinatie 1+4 = 5. Dat getal 5 wordt dan in het juiste veld weggeschreven.
De listbox (lstCats) bestaat uit twee kolommen. De eerste kolom is de waarde van de categorie, de tweede bevat de naam die wordt weergegeven op het formulier.
Ik doe dit met de volgende code:
Dit werkt allemaal perfect. Ik kies een aantal categorieën, waarop de totale waarde wordt opgeteld en weggeschreven in txtCategories. Die textbox correspondeert met het juiste veld in de database.
Het moet natuurlijk ook in de omgekeerde volgorde werken. Wanneer ik door de records blader, dan wordt de somwaarde van de categorieën weer in txtCategories geplaatst. Die somwaarde moet dan worden ontleed en aan de hand daarvan moet worden gekeken welke items er in de lijst geselecteerd moeten worden.
Het probleem zit hem in 'Wanneer ik door de records blader'. Hoe kan ik, telkens als ik door de records blader, automatisch de juiste code uitvoeren? Het lijkt gewoon een kwestie van het in het goede Event van het formulier droppen, maar ik kan geen Event vinden die hiervoor in aanmerking komt.
Hoe doe ik dat dan wel? Of moet ik deze hele zaak heel anders aanpakken?
De combinatie van categorieën wordt opgeslagen in één veld van mijn database. Daartoe heb ik iedere categorie een waarde meegegeven. Die waarden lopen van 1, 2, 4, 8, 16 , 32, 64 etc. Dus als bv de eerste en de derde categorie geselecteerd zijn, dan wordt de waarde van deze combinatie 1+4 = 5. Dat getal 5 wordt dan in het juiste veld weggeschreven.
De listbox (lstCats) bestaat uit twee kolommen. De eerste kolom is de waarde van de categorie, de tweede bevat de naam die wordt weergegeven op het formulier.
Ik doe dit met de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
| Private Sub lstCats_AfterUpdate()
Dim intCatMask, intItem As Integer
intCatMask = 0
For Each intItem In lstCats.ItemsSelected
intCatMask = intCatMask + lstCats.Column(0, intItem)
Next intItem
txtCategories = intCatMask
End Sub |
Dit werkt allemaal perfect. Ik kies een aantal categorieën, waarop de totale waarde wordt opgeteld en weggeschreven in txtCategories. Die textbox correspondeert met het juiste veld in de database.
Het moet natuurlijk ook in de omgekeerde volgorde werken. Wanneer ik door de records blader, dan wordt de somwaarde van de categorieën weer in txtCategories geplaatst. Die somwaarde moet dan worden ontleed en aan de hand daarvan moet worden gekeken welke items er in de lijst geselecteerd moeten worden.
Het probleem zit hem in 'Wanneer ik door de records blader'. Hoe kan ik, telkens als ik door de records blader, automatisch de juiste code uitvoeren? Het lijkt gewoon een kwestie van het in het goede Event van het formulier droppen, maar ik kan geen Event vinden die hiervoor in aanmerking komt.
Hoe doe ik dat dan wel? Of moet ik deze hele zaak heel anders aanpakken?
[ Voor 167% gewijzigd door Maniakje op 22-09-2003 16:26 ]
The sentence below is true.
The sentence above is false.