Como evitar introducir datos duplicados desde formulario access y en caso de existir los muestre.

Estoy intentado hacer una pequeña base de datos de componentes electrónicos que tengo en mi taller, necesitaría saber como evitar introducir datos duplicados desde el formulario y en caso de que al introducir un dato este existiera ya me lo muestre.

La tabla solo lleva dos campos:

Nombre: (campo de texto)

Cantidad: (campo numérico)

2 respuestas

Respuesta
2

Supongamos que la tabla se llama Componentes. En el formulario, en las propiedades del cuadro de texto-Eventos-Antes de actualizar, crea un procedimiento de evento y entre Private Sub... y End Sub puedes poner

If nz(dcount("*","componentes","nombre='" & me.nombre & "'"))>=1 then

Msgbox"Ese componente ya está en la tabla", vbokonly","No se guardará"

Docmd. Cancelevent

end if

Me explico, si tu escribes un nombre de componente y pulsas la tecla Enter o te vas al control Cantidad, primero cuenta en la tabla Componentes si ya hay uno con ese nombre. En caso de que sea así, te muestra el mensaje y al pulsar Ok, el cursor se vuelve al control Nombre para que lo cambies.

Gracias esa respuesta resuelve mi primera duda, algo así tenia echo es que hace más de 30 años que no programo, me pase a la electrónica y deje un poco aparcado el tema. La segunda cuestien es si reconoce que el componente existe como puedo hacer que me los muestre en el mismo formulario para poder modificar la cantidad. Muchísimas gracias y perdón por los calentamientos de cabeza.

Al no saber como es el formulario y lo que debe hacer es difícil darte una respuesta concreta. Porque si lo usas para dar entrada de componentes, habría que hacerlo de una forma. Si lo usas para dar salida de componentes, para una reparación, habría que hacerlo de otra forma. Si lo usas para entrada/salida de componentes de otra, etc, etc.

Gracias por la respuesta, en principio solo es para realizar entradas y saber que conponentes tengo y que cantidad de cada uno.

Entonces te convendría tener una tabla Componentes con la descripción y las existencias y otra tabla Entradas donde se refleja, por ejemplo, el proveedor( por si tienes que partirle la cara), el precio( por si tienes que hacerle lo mismo), la fecha de entrada y la cantidad( y una vez que anotes la cantidad, te modifique las existencias de la tabla Componentes para que siempre estén actualizadas). Por ejemplo, si tengo la tabla Componentes

Y la tabla Entradas con la que hago un formulario, donde escribo el proveedor, la fecha de entrada, elijo el componente que entró(se podría poner que si es un componente nuevo te avise y lo des de alta) y la cantidad que entró. Puedes ver que el cursor aún está en el control Cantidad

Cuando pulso Enter, por un lado me guarda en la tabla Entradas estos datos, por lo que pueda pasar, y además me deja la tabla Componentes con las nuevas existencias de placas base

El código del evento Después de actualizar del cuadro de texto Cantidad es

Private Sub Cantidad_AfterUpdate()
DoCmd.SetWarnings False
DoCmd.RunSQL "update componentes set existencias=nz([existencias])+cantidad where idcomponente=" & Me.IdComponente & ""
End Sub

Le pongo lo de Nz por si un componente fuera nuevo y por tanto no hay existencias anteriores.

Respuesta
1

Adiciono estas recomendaciones, si está preguntando:

"Como evitar introducir datos duplicados desde formulario Access y en caso de existir los muestre"

Así como le explican no es la forma de actualizar la tabla de componentes por:

1. Antes se debe verificar que en el formulario no se repita el componente

2. Si está el componente, se debe mostrar cuantos ha registrado

3. ¿Si después vuelve al mismo registro y cambia la cantidad 33 por 23?, estaría adicionando otros 23 a la existencia. ! La actualización no se puede hacer individual !, sino mediante un botón de grabación, de tal forma que se recorra el formulario clonado, e igualmente se debe controlar que NO se repita la actualización.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas