Cascading Combo Boxes

  • Thread starter Thread starter Tom
  • Start date Start date
T

Tom

I need some help w/ cascading combo boxes in conjunction with subforms.

I posted a similar thread before, but I still haven't been able to get this
to work.
(Ken Snell was so kind to get me up to speed until this point and I'm not
sure if
I truly understood his additional recommendations in respect to using
subforms).

Before I post my question, I'd like to provide some detailed information
about the tables, forms, subforms, etc. The description is quite lengthy,
so please bare w/ me.


I have a 3-tier One-To-Many table structure.
- Division is "parent" of SectionCode
- SectionCode is "parent" of BilletCode


TABLE (and relationships):
**************************

tblDivisions
============
DivisionID (Autonumber)
Division (Text)

tblSections
===========
SectionID (Autonumber)
DivisionIDfk (Number)
SectionCode (Text)

tblBilletCodes
==============
BilletCodeID (Autonumber)
SectionIDfk (Number)
BilletCode (Text)



FORMS AND SUBFORMS:
*******************

First,
1. I have a mainform (frmBoards). This form contains general board
information. Then,
2. tblDivisions is stored on frmDivisions
3. tblSections is stored on frmSections
4. tblBilletCodes is stored on frmBillets

then
A. frmDivisions has a subform (frmSections)
B. frmSections has a subform (frmBillets)


NOTE: all 3 forms (frmDivisions, frmSections, frmBillets) are displayed in
"Datasheet"
view



DATA DEPENDENCIES FOR THE COMBO BOXES
*************************************

At this time (for testing purposes), I have the 3 combo boxes for Division,
SectionCode, and BilletCode on a single form.

The cascading dependencies for Divisions, Sections, and Billetcodes are
better understood with the following geographical example:

Let's say:
- Division = State
- SectionCode = City
- BilletCode = Community

For instance, the values in the combo must are dynamic based on their parent
value(s):
- If State "CA"
- then City "San Francisco" or "Los Angeles"
- then Community "SF North", "SF South", "LA North", "LA South"

- If State "FL"
- then City "Miami" or "Jacksonville"
- then Community "MIA North", "MIA South", "JVL North", "JVL South"

etc.... the same principle applies for my 3-tier relationship betwen
Division,
SectionCodes, and BilletCodes



CURRENT COMBO BOXES (SINGLE FORM)
*********************************

Here's how the cascading combos work on a SINGLE form (which I need to
translate into
the mentioned forms and subforms).

NOTE: for testing purposes, I do pull the source data from their respective
tables
I currently store them into a temporary data storage table (tblComboTest).



Single Form is called = "ComboTest"
===================================
- RecordSource = tblComboTest
- contains combos "Division", "SectionCode", "BilletCode"


Combo "Division"
================
- Control Source = Division
- Row Source Type = Table/Query
- Row Source = SELECT tbl_Divisions.Division
FROM tbl_Divisions GROUP BY tbl_Divisions.Division
ORDER BY tbl_Divisions.Division;
- Bound Column = 1
- Limit to List = No
- Auto Expand = Yes

Event: On Change (below &&&s):

&&&&&&&&&&&
Private Sub Division_Change()
SectionCode.Requery
Me.SectionCode = Me.SectionCode.ItemData(0)

BilletCode.Requery
Me.BilletCode = Me.BilletCode.ItemData(0)
End Sub
&&&&&&&&&&&


Combo "Section"
===============
- Control Source = Section
- Row Source Type = Table/Query
- Row Source = SELECT DISTINCT tbl_Sections.SectionCode
FROM tbl_Divisions INNER JOIN tbl_Sections
ON tbl_Divisions.DivisionID = tbl_Sections.DivisionIDfk
WHERE
(((tbl_Divisions.Division)=[Forms]![ComboTest]![Division]))
ORDER BY tbl_Sections.SectionCode;
- Bound Column = 1
- Limit to List = No
- Auto Expand = Yes

Event: On Change (below &&&s):

&&&&&&&&&&&
Private Sub SectionCode_Change()
BilletCode.Requery
Me.BilletCode = Me.BilletCode.ItemData(0)
End Sub
&&&&&&&&&&&



Combo "BilletCodes"
===================
- Control Source = BilletCode
- Row Source Type = Table/Query
- Row Source = SELECT tbl_BilletCodes.BilletCode, tbl_Divisions.Division,
tbl_Sections.SectionCode FROM (tbl_Divisions INNER JOIN tbl_Sections
ON tbl_Divisions.DivisionID = tbl_Sections.DivisionIDfk)
INNER JOIN tbl_BilletCodes ON
tbl_Sections.SectionID = tbl_BilletCodes.SectionIDfk
WHERE (((tbl_Divisions.Division)=[Forms]![ComboTest]![Division])
AND ((tbl_Sections.SectionCode)=[Forms]![ComboTest]![SectionCode]))
ORDER BY tbl_BilletCodes.BilletCode;
- Bound Column = 1
- Limit to List = No
- Auto Expand = Yes




Again, I apologize for this very lengthy post; however, I believe it may
eliminate
some questions in the thread (besides it might provide good reference for
anyone
else who needs to recreate this scenario on a single form).

Alright, at this time, my question is straightforward... how do I modify
this
row sources & On Change event handlers to get the same results using
multiple subforms?


Thanks so much in advance,
Tom
 
Tom,

One thing is not clear.
Do you want to KEEP the comboboxes and MOVE them to the
subforms, or do you want to REPLACE the comboboxes with
the subforms
-----Original Message-----
I need some help w/ cascading combo boxes in conjunction with subforms.

I posted a similar thread before, but I still haven't been able to get this
to work.
(Ken Snell was so kind to get me up to speed until this point and I'm not
sure if
I truly understood his additional recommendations in respect to using
subforms).

Before I post my question, I'd like to provide some detailed information
about the tables, forms, subforms, etc. The description is quite lengthy,
so please bare w/ me.


I have a 3-tier One-To-Many table structure.
- Division is "parent" of SectionCode
- SectionCode is "parent" of BilletCode


TABLE (and relationships):
**************************

tblDivisions
============
DivisionID (Autonumber)
Division (Text)

tblSections
===========
SectionID (Autonumber)
DivisionIDfk (Number)
SectionCode (Text)

tblBilletCodes
==============
BilletCodeID (Autonumber)
SectionIDfk (Number)
BilletCode (Text)



FORMS AND SUBFORMS:
*******************

First,
1. I have a mainform (frmBoards). This form contains general board
information. Then,
2. tblDivisions is stored on frmDivisions
3. tblSections is stored on frmSections
4. tblBilletCodes is stored on frmBillets

then
A. frmDivisions has a subform (frmSections)
B. frmSections has a subform (frmBillets)


NOTE: all 3 forms (frmDivisions, frmSections, frmBillets) are displayed in
"Datasheet"
view



DATA DEPENDENCIES FOR THE COMBO BOXES
*************************************

At this time (for testing purposes), I have the 3 combo boxes for Division,
SectionCode, and BilletCode on a single form.

The cascading dependencies for Divisions, Sections, and Billetcodes are
better understood with the following geographical example:

Let's say:
- Division = State
- SectionCode = City
- BilletCode = Community

For instance, the values in the combo must are dynamic based on their parent
value(s):
- If State "CA"
- then City "San Francisco" or "Los Angeles"
- then Community "SF North", "SF South", "LA North", "LA South"

- If State "FL"
- then City "Miami" or "Jacksonville"
- then Community "MIA North", "MIA South", "JVL North", "JVL South"

etc.... the same principle applies for my 3-tier relationship betwen
Division,
SectionCodes, and BilletCodes



CURRENT COMBO BOXES (SINGLE FORM)
*********************************

Here's how the cascading combos work on a SINGLE form (which I need to
translate into
the mentioned forms and subforms).

NOTE: for testing purposes, I do pull the source data from their respective
tables
I currently store them into a temporary data storage table (tblComboTest).



Single Form is called = "ComboTest"
===================================
- RecordSource = tblComboTest
- contains combos "Division", "SectionCode", "BilletCode"


Combo "Division"
================
- Control Source = Division
- Row Source Type = Table/Query
- Row Source = SELECT tbl_Divisions.Division
FROM tbl_Divisions GROUP BY tbl_Divisions.Division
ORDER BY tbl_Divisions.Division;
- Bound Column = 1
- Limit to List = No
- Auto Expand = Yes

Event: On Change (below &&&s):

&&&&&&&&&&&
Private Sub Division_Change()
SectionCode.Requery
Me.SectionCode = Me.SectionCode.ItemData(0)

BilletCode.Requery
Me.BilletCode = Me.BilletCode.ItemData(0)
End Sub
&&&&&&&&&&&


Combo "Section"
===============
- Control Source = Section
- Row Source Type = Table/Query
- Row Source = SELECT DISTINCT tbl_Sections.SectionCode
FROM tbl_Divisions INNER JOIN tbl_Sections
ON tbl_Divisions.DivisionID = tbl_Sections.DivisionIDfk
WHERE
(((tbl_Divisions.Division)=[Forms]![ComboTest]!
[Division]))
ORDER BY tbl_Sections.SectionCode;
- Bound Column = 1
- Limit to List = No
- Auto Expand = Yes

Event: On Change (below &&&s):

&&&&&&&&&&&
Private Sub SectionCode_Change()
BilletCode.Requery
Me.BilletCode = Me.BilletCode.ItemData(0)
End Sub
&&&&&&&&&&&



Combo "BilletCodes"
===================
- Control Source = BilletCode
- Row Source Type = Table/Query
- Row Source = SELECT tbl_BilletCodes.BilletCode, tbl_Divisions.Division,
tbl_Sections.SectionCode FROM (tbl_Divisions INNER JOIN tbl_Sections
ON tbl_Divisions.DivisionID = tbl_Sections.DivisionIDfk)
INNER JOIN tbl_BilletCodes ON
tbl_Sections.SectionID = tbl_BilletCodes.SectionIDfk
WHERE (((tbl_Divisions.Division)=[Forms]! [ComboTest]![Division])
AND ((tbl_Sections.SectionCode)=[Forms]! [ComboTest]![SectionCode]))
ORDER BY tbl_BilletCodes.BilletCode;
- Bound Column = 1
- Limit to List = No
- Auto Expand = Yes




Again, I apologize for this very lengthy post; however, I believe it may
eliminate
some questions in the thread (besides it might provide good reference for
anyone
else who needs to recreate this scenario on a single form).

Alright, at this time, my question is straightforward... how do I modify
this
row sources & On Change event handlers to get the same results using
multiple subforms?


Thanks so much in advance,
Tom


.
 
Back
Top