Looks like you need a table for the ad, its status (cancelled or active) and its shedulling options and then another table for scheduling each appearance. Finding all the records for a specific date in the scheduling table will then tell you what ads to include in that issue of your publication. With that design, you can set up a script that finds all non cancelled ad records with options 2 - 4 and then loops through them checking fields in the ad record to determine whether to create a new matching record in the scheduling table.
You'd need at least this table structure (and likely several more for other aspects of your business):
Ads----<Schedule (---< means a one to many relationship)
Ads::AdID = AdSchedule::AdID
A layout based on AdSchedule can include any fields you need from Ads to show details about that particular scheduled advertisement.
Your reply is where I thought I'd have to go, and has sparked more thoughts. I'm off to rebuilt and will let you know how I get on.