You would add an "archive" field to the table. Or an "inactive" field. Or
you could include a date in your records.
Then, any form, report, or query would have the criteria [Archive] = false
or [Inactive] = False or [DisciplineDate] > Date()-365
Do not set up filters or make them do it, simply include the criteria in
your query. In other words, the form NEVER displays the old records. You
don't have to move them to another table, you simply mark them as "old".
Furthermore, these "discipline" records would most likely be tied to a
particular student. If that student is flagged as "inactive" or has an
entry in the "graduation date" or similar, then their records should not
show up anywhere.
You never want to build a database that requires you to go in and clean
stuff up all the time. Use the queries to determine what data you are
looking at.
Of course, there will come a point when you may want to get rid of old
stuff, but my personal philosophy is that if you will need it for any
reason, keep it out there and flag it as old. The only time I take it out
of the table is when it is so old that I no longer need it, and then I
simply run delete queries.
Rick B