[Access 2002] Categorieën als bitmask opslaan

Pagina: 1
Acties:

  • Maniakje
  • Registratie: Februari 2001
  • Laatst online: 28-07 12:50
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:
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.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

edit:

Ok. :) Laat trouwens dat "Ik twijfel tussen"- gedeelte anders weg; alleen de post is voldoende. :)

[ Voor 91% gewijzigd door gorgi_19 op 22-09-2003 15:59 . Reden: Hij had z'n post aangepast; iets andere tekst gemaakt. :) ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Waarom sla je die categoriën op in 1 veld?

Dat is gewoon een slecht datamodel. Je maakt beter een extra tabel waarin dan de categoriën voor dat record opgeslagen worden.

https://fgheysels.github.io/