Is there any way that I can lock one or more records so that a user can’t change anything in them?
Sorry, there is no way to do that.
Maybe you know all of what I about to say, but just in case here are a few ideas. I have for many years used a variety of strategies to control what users can and cannot do. The applications I have developed are used in an office environment with a range of skills, so I try to prevent mistakes by unsophisticated users and hide data that certain users should not see. In Pan X you can lock the database to an account and allow the user only to log in as a User. That immediately prevents access to various functionality and allows you to limit on high level what the person can do. You can hide fields that you do not want a user to see and never present them with a way of editing data in fields; I think they can be restricted to using forms you create for them. You can set up custom menus that can limit user powers. I think you could flag individual rows and then have a .modify procedure that prevents those rows from being changed by the user. So you can do a lot to limit user modifications to the data. I haven’t yet deployed any Pan X databases for general use so I have not worked through all of these issues.
I have a database of invoice line items (one invoice item per record). Once an invoice has been created and despatched, none of its content should ever be modified.