The problems are the way your relationships are defined. A relationship is ALWAYS FK to PK So if you want to relate a suspect to an Operation, the FK in the suspects table MUST match the autonumber (which is the PK in the Operational table. And in order to ensure that you never have orphans as you do now, you MUST enforce RI (Referential Integrity) which you can ONLY do if the relationships are proper and there are no current orphans.
If Incident is unique, you could use that as the PK for the Operational table and delete the autonumber. The only reason to ever have an autonumber in a table is because you need a unique primary key and your data doesn't contain one. Incident is actually two fields mushed together so technically if you were to use this as a PK you would have a field named IncidentYR and a second named IncidentSeq. Even though you use two separate columns to define the Incident doesn't mean you can't print t the way it currently looks as year concatenated to a fixed length sequence number. Since you really don't care about the actual sequence number part, accountants get blue in the face if they have a gap in check numbers but this isn't that type of data. If you had a gap, the world wouldn't come to an end and you wouldn't have to send out a search party to find the missing number. SO. I would use the Autonumber as the sequence number part and I would use the year from OpDate as the prefix whenever I printed the number or displayed it anywhere.
Select Year(OpDate) & Format(IncidentID, "00000000") As Incident, ... - it is really poor practice to name all your autonumbers "ID")
The number of zeros in the format controls the length of the string so that it is always 8 characters with however many leading zeros are necessary. So if the number were 12345, the string would return 00012345 to come to 8 characters.
You will then need to do some manipulation when the user enters 202100012345 to strip off the leading 4 digits and just look for 12345 as the autonumber field. You could store the concatenated value instead of creating it on the fly in the query. Technically, this is a violation of normalization rules because you don't want to save the same data twice. But this data isn't changeable since it is the PK of the record so as long as you carefully protect against that, storing the duplicate data is manageable.
Once the relationships are corrected so that you are using the correct field as the foreign key, then you can enforce RI and that will prevent orphans. If you try to delete a record from Operational and it has child records in Suspects, RI will prevent the delete since that would orphan the record in Suspects. If your business rules allow deletes, you can specify Cascade Delete in the RI options and that will silently delete any related Suspect records if their parent Operational record is deleted. As you can imagine, this is fraught with danger but absolutely valid and I do it all the time. Usually there are rules about what can be deleted so for example, if an order has been shipped, you can't delete the order. It is too late, the product is on its way to the customer. Usually, we don't like to allow deletions of high level entity data but I would need to know more about your business rules to tell you how to handle that. The solution if you can't delete a record like the ones in the Operational table, is to add a DeletedDT and a DeletedReason field. ALL your queries except the ones for the edit form would need to select only non-deleted records:
Select ... From ... Where DeletedDT Is Null
There are lots of other changes I would recommend to the database but they have more to do with best practices rather than bugs. Best Practices are a little like defensive driving and looking both ways before you cross the street. You might not get killed if you ignore them but you're taking unnecessary chances.
Because you are the police and I am a resident of Connecticut, I would be willing to donate a few hours to the cause. PM me if you are interested.