When you open the Access the database locally it is a copy of what is on Sharepoint. Because the copy was read-only it remains as such locally. When you run local code to tell Sharepoint you are checking out the database it is too late because you already have a local copy that isn't checked out. You have to use the website to do this.