[AccessD] A strange situation

jwcolby jwcolby at colbyconsulting.com
Thu Apr 29 13:48:05 CDT 2010


I have a security system where there are groups of users.  Each group is represented by a bit 
position in a long integer.  1 = GroupA, 2 = GroupB, 4 = GroupC etc.

I have a form which has 32 check boxes on it.  These check boxes represent the bit positions in a 
long integer.  IOW each bit position represents a group.  The form has methods to take a long 
integer and set / clear the associated check box as well as hide / display check boxes.

All of that works.

The form with the check boxes will be a subform on a parent form that allows the user to set 
security for a specific form.  This parent form displays records in a table.  The records have a 
form name, and long integer fields for AllowEdit, AllowDelete etc.

The parent form form thus has five text boxes representing the properties of a form - Visible, 
AllowEdit, AllowDelete, AllowInsert etc.  Each text box will display a long integer which represents 
the OR of a set of groups which can perform the operation.

As I click into one of these text boxes I need to make the "checkbox" subform "visible".  I may 
click into that subform and click check boxes representing bit positions which are groups that can 
perform that operation (allowedits etc).

Or... I may click into another of the text boxes.

As I click into the text box, the subform displayed has to set / clear the check boxes representing 
the groups contained in the bit positions of the long integer contained in the text box.

Simple enough eh?

The problem is making visible just the subform for the "current" text box.  The only way I can think 
of to do this is a tab control which is kind of clumsy but works.  Place an instance of the check 
box subform on a tab, one tab for each property.  As the user clicks into one of the "property" text 
boxes, the correct tab is selected, displaying the subform for that text box.

One problem is that as the user clicks OUT of the subform, the check box values have to be rolled 
back into a long integer and placed into the correct text box for that subform.  The subform itself 
has a method that performs this rollup and hands back the long integer, the problem is that the 
OnExit of the subform has to do the placement of the long integer into the associated text box.

This is turning into a lot of very ugly code in the parent form module.  This is begging for a class 
solution to compartmentalize the code but things are getting intertwined.  OnEnter of the text box 
has to call its subform and pass it the long integer it contains.  OnExit of the subform control has 
to know what text box to pass the value back to.  OnEnter of the text box has to select the correct 
tab of the tab control.

Whooo doggy, things are getting fun.

-- 
John W. Colby
www.ColbyConsulting.com



More information about the AccessD mailing list