en mi caso cuando se trata de agregar registros, abro los recordset con bloqueos optimistas y hago uso de campos autonuméricos, asi aunque esten varios usuarios al mismo tiempo, siempre le tocará un solo registro diferente cada quien.
para los permisos, manejo 4, Altas-Bajas-Cambios-Consultas, guardo en una tabla 6 campos
usuario - modulo - Alta - Baja - Cambio - Consulta
todos los campos son numéricos, los 4 ultimos tipo byte, en el campo usuario guardo el número de cada usuario a mi aplicación.
En modulo, guardo el número de cada modulo de mi aplicación, por ejemplo el modulo de proveedores (se da de alta, bajas, cambios y consultas a los datos de los proveedores)
Los últimos 4 campos serán para identificar qué operaciones podrá hacer el usuario en el modulo, por ejemplo
usuario - modulo - Alta - Baja - Cambio - Consulta
juan --proveedores - 1 --- 0 -------- 1 ----------- 1
en este ejemplo establezco que al usuario JUAN en el módulo o pantalla (form) de proveedores solo podrá AGREGAR REGISTROS, CAMBIAR REGISTROS y por defecto, CONSULTAR REGISTROS (no pude cambiar lo que no puede ver)
Al momento de cargar el módulo (Form_Load) busco en la tabla de USUARIOS si el usuario que entro tiene permiso para "AGREGAR", si es asi, activo el botón/menú de agregar, si el usuario tiene derecho a "BORRAR" activo el botón/menu de borrar, y así sucesivamente, depende de qué hagas en el formulario
antes cada usuario debe de hacer login al iniciar la aplicación, para asi tenerlo siempre identificado y los permisos listos para activar (ya sea la propiedad ENABLED o VISIBLE) algunos botones o menus
espero te sirva de algo, a mi, asi me funciona, suerte