Triplicar

Quiero crear un campo de una tabla, el cual debe tener como propiedad que a la tercera vez que coloque un mismo valor, me avise, y además no me deje seguir cargando. Como la opción Indexado que permite duplicar, pero yo necesito triplicar. ¿Cómo debo hacer?

1 Respuesta

Respuesta
1
La propiedad Indice con duplicados de Access no indica que se puedan meter dos registros iguales, sino que lo que indica es que se pueden meter infinitos registros con ese campo repetido.
Tu lo que pretendes, además es que Access te avise cuando en una tabla metas tres registros con el mismo campo repetido.
Y parece ser que quieres que te avise en el momento en que insertas el tercer registro repetido.
Bien, pues esto Access no lo controla salvo que tu realices el control por código VBA.
El código que debes montar es bastante sencillo, se trata de crear una función que localice los registros que existen en una tabla con un campo repetido.
Esta función puedes llamarla:
Function Registro_Repetido(Cod)
Y el contenido puede ser algo así:
Registro_Repetido=false
If isnull(Cod) Then Exit Functon
Dim sql as string
sql="SELECT * FROM [NombreTabla]"
sql=sql & " WHERE [NombreTabla].[Campo]=" & Cod
Dim DB as Database
Set DB = CurrentDB()
Dim Rec as Recordset
Set Rec = DB.OpenRecordset(sql, DbOpenSnapShot)
If Rec.Recordcount >= 2 Then
Registro_Repetido=True
End If
Rec.Close
Exit Function
Lo que hace la función es localizar los registros que existen de ese campo en la tabla y si son más de 2 devuelve verdadero.
Ahora solo queda implementar esa función en los eventos de control del formulario que va a mantener a la tabla. Es decir esa tabla se debe mantener desde un formulario, y como es lógico desde ese formulario se darán altas, bajas y se efectuarán modificaciones. Pues bien, se debe controlar en el alta que no existen más registros de los que se estime conveniente. Para ello se puede emplear el evento antes de Actualizar del formulario (Form_BeforeUpdate).
Por favor, podrías describir los pasos principales para emplear el evento antes de Actualizar del formulario.
Muchas Gracias
En el formulario donde estas trabajando, debes seleccionar las propiedades, y coger la carpeta eventos. Y en el evento Antes de Actualizar del formulario (Form_BeforeUpdate) debes pulsar en el asistente para incorporar código (...) y aparecerá escrito la cabecera del evento y el final de la siguiente manera:
Sub Form_BeforeUpdate()
End Sub
Entre estos dos parámetros debes controlar con excepción la existencia del triplicado, más o menos de la siguiente forma:
If Registro_Repetido(Cod) Then
Msgbox "El Registro esta Duplicado.",16,"TituloAplicación"
Docmd.Cancelevent
SendKeys "{ESC}"
Exit Sub
End If
Esta excepción comprueba con la función Registro_Repetido si existe el código más de dos veces. Si es así, muestra un mensaje de stop que indica que el registro esta duplicado. A continuación cancela el evento (docmd. Cancelevent), deshace lo que se halla hecho (Sendkeys "{ESC}") y sale de la función (Exit Sub).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas