John & Ken,
I didn't see your posts until just now. Not sure what happened, however they did not come through for some reason. All 3 of you (including Jeanette) agree that it's a bad idea to do what I was going to with the multiple yes/no fields. Looking back on it, your right, not the smartest thing I've come up with. That having been said, I am very intrigued by both of your responses to my question. I'm going to have to look into what you are saying, but I think I understand what you gentlemen are getting at and will play around with the database to see what works best. For now I can't thank all of you enough for your wise council. It's been a huge help!
Tara
KenSheridan via AccessMonster.com wrote:
Tara:I will come back to the question of having a single 'InstallType' column
27-Jan-10
Tara
I will come back to the question of having a single 'InstallType' column later
but firstly I'd like to examine just how the survey data is stored. I a
assuming the form is based on a 'Jobs' table or similar, so lets assume i
has a primary key JobID. What I'd envisage for the surveys is a Survey
table which includes a foreign key JobID column to relate it to the Job
table. This table would have a primary key SurveyID and columns for thos
attributes which are common to both types of survey, such as SurveyDate. A
the two survey types presumably each have attributes which are distinct fo
each I'd then envisage two further tables, ContractorInstallSurvey an
InHouseInstallSurvey say, each of which will again have a primary ke
SurveyID. The important point here is that the SurveyID columns i
ContractorInstallSurvey and InHouseInstallSurvey are also foreign key
referencing the primary key of Surveys, i.e. the relationship type is one-to
one. Note that the SurveyID columns in ContractorInstallSurvey an
InHouseInstallSurvey cannot be autonumbers, but that in Surveys can be
For data entry I'd envisage a form based on the Jobs table and within it tw
subforms, one for each survey type. The ContractorInstall survey subfor
would be based on a query which joins Surveys and ContractorInstallSurvey o
SurveyID, the InHouseInstall survey subform on a query which joins Survey
and InHouseInstallSurvey on SurveyID. Both would be linked to the paren
form on JobID
You could either superimpose the two subforms and show the relevant one
With your current two fields you would put the following code in the AfterUpdat
event procedures of both check boxes bound to these fields, and in the form'
Current event procedure
Me.sfcContractorSurvey.Visible = Nz(Me.ContractorInstall,False
Me.sfcInHouseInstall.Visible = Nz(Me.InHouseInstall,False
where sfcContractorSurvey and sfcInHouseInstall are the names of the subfor
controls in the main form, i.e the controls which house the subforms
The reason for the Nz functions is that when you navigate to a new record
bound check box is Null until you start to enter data
The other option would be to have both subform's visible side by side or on
above the other, or on separate pages of a tab control and enable/disabl
them as appropriate. In this case the code in the event procedures would be
Me.sfcContractorSurvey.Enabled = Nz(Me.ContractorInstall,False
Me.sfcInHouseInstall.Enabled = Nz(Me.InHouseInstall,False
Coming back to the issue of a single 'InstallType' field rather than your tw
Boolean (Yes/No) fields I'd agree completely with Jeanette and John on this
What you are doing at present is what is known as 'encoding data as colum
headings. A fundamental principle of the database relational model (th
Information Principle) is that data is stored as values at column position
in rows in tables and in no other way.
What I have said above about the survey tables and subforms would still apply
however. You'd just amend the code along these lines
Me.sfcContractorsurvey.Enabled = (Nz(Me.InstallType,"") = "Contractor"
Me.sfcInHouseInstall.Enabled = (Nz(Me.InstallType,"") = "InHouse"
Ken Sherida
Stafford, Englan
Tara Metzger wrote
-
Previous Posts In This Thread:
Submitted via EggHeadCafe - Software Developer Portal of Choice
C#.NET and COM Interop
http://www.eggheadcafe.com/tutorial...c-8610-bc2550430968/cnet-and-com-interop.aspx