Is there a way to designate when hard constraints are applied? My survey is for a vegetation monitoring project that includes a line-intercept section, in which we record the start and end points of trees and shrubs along a transect. Each transect at a site is a repeat in the survey, and each individual in the line-intercept section is one instance of a nested repeat. Each line intercept must include a start point and end point. We often have overlapping individuals, and record start and end points as we reach them along the transect to prevent lots of back-and-forth in the field. For example, we may have a canopy tree with a smaller shrub underneath it, in which case we would record the start point for the tree's canopy, then the start point for the shrub, then the end point for the shrub, then the end point for the tree's canopy (this is a simplification - we often have 3-4 things at a time). On our paper data sheets it is simple to leave an instance "open" (start but no end) until we reach the end, and also to check that we don't have any blanks in the end point column when we reach the end of a transect.
In my survey, I have the start point and end point both required for each individual line intercept. This prevents us from failing to enter an end point, but also prevents us from being able to enter things in overlapping order. Ideally this constraint would be applied when the parent transect is complete (again, line intercept repeat is nested within a transect repeat within the monitoring site), which would allow overlapping data entry but also prevent missing values. Ideally, if a value were missing, when you tried to advance to the next transect you would get a message stating WHICH value(s) was(/were) missing (e.g., "Please record the end point for <species> beginning at <start point> before proceeding to the next transect").