No permitir guardar campos en formulario

Tengo una bbdd donde he configurado un formulario. En este formulario hay un campo Identificador que los usuarios deben introducir. Es único (supongamos que se trata de un DNI: abres una ficha a una persona y pones su DNI, pero si este ya existe, salta un aviso en pantalla que te informa que ya tiene una ficha abierta) y me gustaría que si se da el caso en que alguien introduzca uno ya existente, no se guarden los otros campos que ya ha introducido en la tabla (es decir, que no se cree un nuevo registro en caso que salte el aviso).
¿Cómo podría solucionarlo?

1 Respuesta

Respuesta
1
Valida la existencia del DNI justo cuando el usuario lo escribe. Un DCount con las condiciones adecuadas en el momento adecuado te devolverá la cantidad de registros. Si es superior a 0, es que ya existe al menos 1. Le mandas un mensaje y anulas la introducción.
Hola, hablamos el tema del DCount hace poco.
En principio hace bien la búsqueda, y el mensaje salta cuando toca, pero no se como invalidar la entrada de datos.
Cada vez que accedes al formulario se genera un nuevo registro en la tabla. Antes de llegar al punto de introducir el identificador, el usuario debe completar unos campos (entonces, esos campos ya se guardan en la bbdd). Si llegas al punto de introducir el ident5ificador, y este no es válido, ¿cómo puedo hacer que hasta que este no sea válido no se guarde un nuevo registro en la tabla?
"Cada vez que accedes al formulario se genera un nuevo registro en la tabla"
Eso es porque algo harás tu. Cuando se accede al nuevo registro (sin código de por medio), el nuevo registro no se generará realmente hasta que te muevas a otro registro o lo fuerces tu. Mientras eso no se produzca, el registro no existe: solo tienes datos escritos en una pantalla. Si tu empiezas un documento de texto pero no lo salvas al salir no tienes nada, ¿verdad? Pues lo mismo con los registros.
De todas formas, un Me. Undo en el momento adecuado (ese es el quid de la cuestión) te soluciona el problema siempre que el registro no se haya almacenado. De ahí que el 'momento adecuado' es algo crucial en este caso.
Xavi
Hola de nuevo,
La base de datos se basa en un menu principal que te permite añadir una UC (unidad de de comprobación) nueva o bien borrar una antigua de una lista. En esta lista, además, he implementado la opción de editar en caso de hacer doble-click sobre un nombre de la lista.
Si editas o añades, se abre el formulario de marras que estoy modificando, en el que se mira la condición de si se está introduciendo un dni existente. El tema es que lo que hago cuando abro ese formulario como resultado de la acción de Añadir en el menu principal, es poner el modo "entrada de datos " a verdadero, con lo que se genera una nueva fila en la tabla sobre la que trabaja dicho formulario. He pensado que tal vez la solución más simple seria hacer que cuando acaben de introducir datos GUARDEN la info mediante un botón. En caso que sea correcto todo, se guarda, en caso que el dni sea uno ya usado ese botón pasa ha bloqueado mientras no se cambie el valor, de forma que si cierran el formulario no se habrá guardado la info.
¿Me podría explicar como puedo gestionar esto?
Sobretodo el tema de guardar los datos donde toca y el hecho que si no se le da al botón, no se guarda la info.
Muchas gracias
Perdona la insistencia, solo necesitaría saber como guardar los campos de un formulario en una tabla si y solo si se clicka sobre un botón Guardar.
Entiendo que debo quitar como origen de formulario la tabla en cuestión, ya que si no, cada vez que abra el formulario me creara un nuevo registro y los datos se guardaran independientemente de que se clique en el botón.
El tema es que una vez quitada esa vinculación (¿el formulario no tiene origen?) Y solventados los errores que me pueda producir, no se como implementar el código para realizar la carga en la tabla que corresponda.
Gracias y disculpa la insistencia nuevamente
Una forma de hacer eso es trabajar con los formularios 'desconectados' tal como tu dices.
La táctica que utilizo yo es pasar, en el openargs del formulario, el id del registro a recuperar, abrir un recordset sobre la tabla filtrada a ese registro y meter los valores en los controles del formulario. Adicionalmente edito ese registro para marcarlo como bloqueado (tengo campos para ello)
Cuando el usuario clica en Guardar, abro otra vez el recordset, lo edito y cambio los valores de los campos por lo que digan los cuadros de texto. Aprovecho para desbloquear el registro y salgo de la pantalla. Si el usuario solo clica en Salir, unicamente desbloqueo el registro y salgo, sin tener en cuenta otros cambios que haya podido realizar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas