No permitir datos duplicados

Tengo una tabla con un campo llamado nombre y otro estado, el campo estado tiene un predeterminado "Activo" lo que hace es que cuando introduzco un nombre ejemplo carlos - activo, me sale así, luego con una consulta de actualización lo dejo carlos - pagado.
¿Cómo hago para que cuando carlos este activo no pueda ingresar nuevamente el campo carlos a menos que éste ya este pagado?
Gracias
No quiero que en la tabla exista en activo :
Carlos - Activo
Carlos - Activo
Respuesta
En caso de que no seas programador, tienes las cosas más complicadas que si lo fueras...
En caso de que no utilices código lo único que se me ocurre es que definas la combinación de campos "carlos" y "activo/pagado" como clave principal de la tabla de modo que, en caso de que insertases dos veces carlos - activo, generase un error y te dijese la base de datos que no se puede insertar el nuevo registro porque duplicaría la clave. El problema es que tampoco podrías entonces tener dos registros del tipo carlos - pagado (porque también supondría una duplicación de clave)
La solución era: crear una consulta con criterio activo y utilizarla como origen del formulario, luego un combo box de otra consulta con los nombres filtrados pero con criterio "pagados" con registros únicos, así cuando busco a carlos para ingresarlo por primera vez me deja porque encuentra a los carlos en pagados, pero la segunda vez no deja porque ya carlos esta activo.
Gracias de todos modos

2 respuestas más de otros expertos

Respuesta
1
El problema no es sencillo porque quieres permitir varios
Carlos - pagado
Carlos - pagado
Carlos - pagado
Pero un solo
Carlos - Activo
Todas las soluciones que se me ocurren requieren código de programación, que no me parece adecuado en este caso.
Te propongo un cambio de concepto. Redefine la tabla de modo que sea Nombre, Fecha_Pago.
Define una clave que use los dos campos, así la propia base de datos se ancargara que no haya duplicados del tipo
Carlos (vacío)
Ni del tipo
Carlos 02/08/02
Que parece adecuado porque tampoco querrar cobrar a alguien dos veces el mismo día.
No me sirve porqye en efecto carlos si me paga varias veces en el mismo día
Bien, pues entonces pongamos la hora en juego. Aunque Carlos te pague más de una vez al día, seguro que no te paga más de una vez al segundo, así que si en el campo Fecha_Pago incluimos la hora, esta resuelto.
Si no sabes como rellenar ese campo con la fecha y la hora automáticamente, escríbeme de nuevo.
Respuesta
La mejor solución es usar un campo de tu tabla que sepamos que es único para cada registro, los números del carnet de identidad, los NIF e incluso el nº de la seguridad social, son ideales para usarlos como clave principal y de esta forma establecer sus propiedades desde la misma tabla. Podría ser un campo Numérico Entero largo Indexado Si (sin duplicados).
El campo estado yo lo haría como del tipo Si/No, o sea, activo/pagado, de esta forma con muy poco código podemos bloquear la edición del registro.
NOTA: yo no usaría el campo nombre por cuanto seguro que tendrás más de un carlos en la tabla.
No puedo usar llaves sin duplicados porque más adelante tengo que usar nuevamente a carlos y con eso no me deja la tabla debe quedar :
c
Carlos - pagado
Carlos - pagado
Carlos - pagado
Carlos - activo --- una única vez que no me deje repetir carlos - activo y con lo que dices no se puede

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas