I am working on my first Access 2010 database and have run into a problem editing the recordset returned from a query. This excellent blog entry details several scenarios which can result in uneditable query results. I believe my query results are not editable because my query has a Cartesian Join.
I’m not sure how to avoid this, however. The three tables involved are:
- episodes
- Individual television episodes
- Primary key: “episode_id”
- aridates
- Individual airdates for a given episode
- Primary key: “airdate_id”
- Related to “episodes” by “airdate_episode_id”
- startdates
- Individual download start-dates for a given episode
- i.e. when a given episode will be available to download
- Primary key: “startdate_id”
- Related to “episodes” by “startdate_episode_id”
- Individual download start-dates for a given episode
So, there is no (and I think can be no) direct relationship between airdates and startdates. However, this makes the query:
SELECT episodes.episode_id, episodes.episode_number, episodes.episode_title, airdates.airdate_region_id, airdates.airdate_date
FROM (episodes LEFT JOIN airdates ON episodes.episode_id = airdates.airdate_episode_id) LEFT JOIN startdates ON episodes.episode_id = startdates.startdate_episode_id;
return a recordset which is not editable. I need to be able to see the episode name and number along with the airdate in order to enter a startdate (episodes can not be made available for download before they have aired). So essentially, in this view I only need to be able to edit “startdates.stardate_date”.
Thanks in advance for any suggestions… a screenshot of the relationship in question can be seen here.
Create this query:
Use it as the recordsource for a new form. Then create another form which uses a query of only the startdates table as its record source.
Add the second form as a subform to the first form. On the property sheet for the subform control, make the link master field episode_id and the link child field startdate_episode_id.
If you are successful, the subform will display startdates rows where the startdate_episode_id matches the episode_id of the main form’s current record. And if you add a new row in the subform, its startdate_episode_id will “inherit” the episode_id from the main form.
I emphasized control earlier because that point can be confusing. The subform control is a member of the main form’s controls collection, and the subform control contains the subform. You must find the link master/child field properties on the subform control, not the actual subform itself.