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?
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).