If you set Visit_Number as an identity column with an increment of 1, the contents of this column will be incremented for every row, which should not be a problem. Keep it as you need an identity column to be able to update an attached table. It will also provide the default sort order for the table.
You can compute (and store) the next visit rank order for each patient using:
In SQL Server:
Code:
SET NextVRO = ( SELECT COUNT(*) FROM Visit WHERE MRN = ...) + 1
In Access (VBA):
Code:
NextVRO = DCount("*", "Visit", "MRN = ...") + 1
On the server, this can even be a computed column.