Hello everyone (and "Season's Greetings" !)... I'm spending some of the quiet time this holiday period with a little project to create a database from some pretty diverse (and inconsistently structured) data. Specifically, I'm in the process of setting up a simple Access DB that offers a consolidated, holistic "threat model", by combining a range of well-known industry threat frameworks, such as Mitre's ATT&CK, STRIDE, DREAD, LINDUNN, PASTA, and others.
If you look at ATT&CK, [sorry, I can't embed a link to the home page, but you can find it at "attack-dot-mitre-dot-org") you can see that it adopts a 3-tier hierarchical structure, with 14 Tactics displayed across the top and then a range of Techniques listed vertically under each. Lastly, some of the Techniques have sub-Techniques that are indicated by vertical grey bars to the right of the Technique. In other words, what we have here is a "tree" data structure.
Now, I've previously written (for a menu management requirement) a library of VBA that allows me to create and maintain such a data structure in a re-entrant table. I won't claim it's elegant or anything, but it works and has been robustly tested. However, the difference between my existing, working code and this new project is one of scale. With my menu management requirement, I could control the maximum number of leaf nodes to any given point in the tree and set an upper limit such that I could have one single Access Form with a well-ordered set of buttons on it. I could then control the visibility of these artifacts based on the number of menu options and, presto, I had a nice, neat, well-ordered form with clickable menu buttons on it.
What I'd like to do with my threat data is navigate with similar simplicity.
The problem is - as you can see from the ATTACK page mentioned above, the number of entities at each node in the tree is going to have a pretty wide range - and that's before we get to some of the more esoteric and not publicly available threat models, like IRAM2 from the Information Security Forum.
A set matrix of visible/invisible buttons isn't going to hack it this time.
The most obvious alternative would be to have a repeating sub-form, with a button and maybe an explanatory text field on each instance. But before I commit to code, I thought it sensible to come hear and invite suggestions from those with more experience of the GUI/Presentation side of Access. My skills are limited (so clear explanations would be appreciated!) but any suggestions as to alternative options would be very gratefully received.
For example, I considered coming up with a dynamically-rendered and re-sizing form, thus:-
The last thing I considered would be the sort of visual tree structure that is found in the Windows Device Manager (if you access Control Panel and set the "View by" option to either "Large" or "Small" Icons, then the applet in question is the one called "Device Manager"). Unfortunately, I've not been able to find any reference to accessing this visual functionality from VBA - and suspect that doing so would require e.g. VB, VC++ or similar.
So... style gurus... any thoughts please? Any tips on how to keep a sub-form clean and elegant?
Thanks in advance!
If you look at ATT&CK, [sorry, I can't embed a link to the home page, but you can find it at "attack-dot-mitre-dot-org") you can see that it adopts a 3-tier hierarchical structure, with 14 Tactics displayed across the top and then a range of Techniques listed vertically under each. Lastly, some of the Techniques have sub-Techniques that are indicated by vertical grey bars to the right of the Technique. In other words, what we have here is a "tree" data structure.
Now, I've previously written (for a menu management requirement) a library of VBA that allows me to create and maintain such a data structure in a re-entrant table. I won't claim it's elegant or anything, but it works and has been robustly tested. However, the difference between my existing, working code and this new project is one of scale. With my menu management requirement, I could control the maximum number of leaf nodes to any given point in the tree and set an upper limit such that I could have one single Access Form with a well-ordered set of buttons on it. I could then control the visibility of these artifacts based on the number of menu options and, presto, I had a nice, neat, well-ordered form with clickable menu buttons on it.
What I'd like to do with my threat data is navigate with similar simplicity.
The problem is - as you can see from the ATTACK page mentioned above, the number of entities at each node in the tree is going to have a pretty wide range - and that's before we get to some of the more esoteric and not publicly available threat models, like IRAM2 from the Information Security Forum.
A set matrix of visible/invisible buttons isn't going to hack it this time.
The most obvious alternative would be to have a repeating sub-form, with a button and maybe an explanatory text field on each instance. But before I commit to code, I thought it sensible to come hear and invite suggestions from those with more experience of the GUI/Presentation side of Access. My skills are limited (so clear explanations would be appreciated!) but any suggestions as to alternative options would be very gratefully received.
For example, I considered coming up with a dynamically-rendered and re-sizing form, thus:-
- Query Tree table and ascertain the # of child records for the target node
- Divide by 2, rounding up, to allow for a 2-column structure
- Calculate a "form height" requirement based on a known structure of header data, plus ("n" x row height) where "n" is the number from the previous step and "row height" is the desired height of each line item (button, text, whatever)
- Render a bespoke, custom-sized form
- Populate with Command Buttons using e.g. the CreateControl language primitive
The last thing I considered would be the sort of visual tree structure that is found in the Windows Device Manager (if you access Control Panel and set the "View by" option to either "Large" or "Small" Icons, then the applet in question is the one called "Device Manager"). Unfortunately, I've not been able to find any reference to accessing this visual functionality from VBA - and suspect that doing so would require e.g. VB, VC++ or similar.
So... style gurus... any thoughts please? Any tips on how to keep a sub-form clean and elegant?
Thanks in advance!