I would suggest that you apply a CHECK CONSTRAINT to each table:
Code:
CurrentProject.Connection.Execute "ALTER TABLE [internal works order part2] ADD CONSTRAINT ShipOnlyIssued CHECK((SELECT PCO FROM [internal works order part2] INNER JOIN [order details] ON [internal works order part2].PCO = [order details].BatchNo WHERE Issued = FALSE AND Shipped = TRUE)IS NULL)"
Do the same for the order details table, changing the constraint name to something different.
If you need to drop a constraint the syntax is:
Code:
CurrentProject.Connection.Execute "ALTER TABLE [internal works order part2] DROP CONSTRAINT ShipOnlyIssued"
Note that in Access you cannot apply or drop a CHECK CONSTRAINT by executing the DDL statement in SQL view, only in code as above. The code can be entered in the immediate window, but be sure the table is not open when you do. In a split database this must be done in the back end of course.