[Acceso] Mensaje de error duplicado
Resuelto
ETSSieb
Mensajes publicados
31
Estado
Miembro
-
Tessel75 -
Tessel75 -
Hola,
Actualmente tengo una anomalía en mi formulario de Access.
He creado mi tabla indicando el campo Ref como clave primaria.
Lo que quiero hacer es poder introducir nuevos elementos a través de este formulario y evitar los duplicados de [Ref].
Por defecto, los duplicados no se registran. Sin embargo, cuando en mi formulario empiezo a introducir una [Ref] ya existente, no pasa nada.
Esto solo ocurre cuando intento pasar al registro siguiente, momento en el que me indica que el registro no es accesible, y solo cuando quiero cerrar este formulario aparece el mensaje de error de Access indicando duplicados.
¿Cómo hacer para mostrar un mensaje de error personalizado en cuanto el campo [Ref] se actualice con un elemento existente?
Gracias de antemano por vuestra ayuda.
Actualmente tengo una anomalía en mi formulario de Access.
He creado mi tabla indicando el campo Ref como clave primaria.
Lo que quiero hacer es poder introducir nuevos elementos a través de este formulario y evitar los duplicados de [Ref].
Por defecto, los duplicados no se registran. Sin embargo, cuando en mi formulario empiezo a introducir una [Ref] ya existente, no pasa nada.
Esto solo ocurre cuando intento pasar al registro siguiente, momento en el que me indica que el registro no es accesible, y solo cuando quiero cerrar este formulario aparece el mensaje de error de Access indicando duplicados.
¿Cómo hacer para mostrar un mensaje de error personalizado en cuanto el campo [Ref] se actualice con un elemento existente?
Gracias de antemano por vuestra ayuda.
8 respuestas
¿Tienes un control en tu formulario que se llama Ref?
Cuando obtienes este mensaje, ¿hay algo escrito como referencia en tu formulario?
Si no, añade la línea al inicio del procedimiento:
If IsNull(Ref.value) or len(Ref.value) = 0 then exit sub
eso evitará iniciar el procedimiento si no se ha escrito nada en Ref.
Manu
Cuando obtienes este mensaje, ¿hay algo escrito como referencia en tu formulario?
Si no, añade la línea al inicio del procedimiento:
If IsNull(Ref.value) or len(Ref.value) = 0 then exit sub
eso evitará iniciar el procedimiento si no se ha escrito nada en Ref.
Manu
Hola a todos,
El tema es un poco antiguo, pero es exactamente lo que buscaba.
Sin embargo, al copiar el código de Manugeo, todo funciona bien al principio, se modifica la caja de diálogo que indica el error. Hago clic en OK, y ahí viene el drama: "Error de ejecución 2115 La macro o la función asignada a la propiedad 'Antes de actualizar' o 'Valide si' para este campo impide que Microsoft Access guarde los datos en el campo."
Sabiendo que el [Ref] se llama en mi caso [Title] de la tabla [T_Biblio] (en Access 2010):
Private Sub Title_BeforeUpdate(Cancel As Integer)
Dim MaRef
MaRef = DLookup(""Title"", ""T_Biblio"", ""[Title]=Title.Value"")
If Not IsNull(MaRef) Then
MsgBox ""Reference already in the base !""
Title.Value = """"
End If
End Sub
Merci d'avance pour le coup de main :)
El tema es un poco antiguo, pero es exactamente lo que buscaba.
Sin embargo, al copiar el código de Manugeo, todo funciona bien al principio, se modifica la caja de diálogo que indica el error. Hago clic en OK, y ahí viene el drama: "Error de ejecución 2115 La macro o la función asignada a la propiedad 'Antes de actualizar' o 'Valide si' para este campo impide que Microsoft Access guarde los datos en el campo."
Sabiendo que el [Ref] se llama en mi caso [Title] de la tabla [T_Biblio] (en Access 2010):
Private Sub Title_BeforeUpdate(Cancel As Integer)
Dim MaRef
MaRef = DLookup(""Title"", ""T_Biblio"", ""[Title]=Title.Value"")
If Not IsNull(MaRef) Then
MsgBox ""Reference already in the base !""
Title.Value = """"
End If
End Sub
Merci d'avance pour le coup de main :)
Hola,
Dado que la pregunta está indicada como resuelta, habría sido mejor que abrieras otra pregunta, incluso si refiriéndote a la pregunta actual con un copiar/pegar de la dirección. No es demasiado tarde, haz un copiar/pegar de tu pregunta actual en una nueva.
Dicho esto, hay un error en la segunda respuesta de Anonyme:"Autant pour moi.. Je mélange systématiquement RechDom et DLookUp (C'est la même chose, mais le premier s'utilise dans les formules, le second dans le code !!!) ". Las dos pueden escribirse perfectamente tanto en el código como en las fórmulas.
Para el resto, hay que saber qué es el error 2115; toca buscarlo en el didáctico.
Ahora hay un método mucho más simple para impedir registros duplicados, y tal vez sea precisamente ese error 2115; pasar por los índices.
Pidiendo para tu campo (aquí MaRef) "Indexé sans doublon", la entrada se bloqueará antes de su registro, y en ese caso el trozo de código es innecesario, salvo si quieres una alerta antes de que Access la haga, de lo contrario también es posible establecer como condición de validez del registro una fórmula del tipo " DCount(blablabla)=0" y añadir un mensaje en la propiedad "Mensaje si error".
Dado que la pregunta está indicada como resuelta, habría sido mejor que abrieras otra pregunta, incluso si refiriéndote a la pregunta actual con un copiar/pegar de la dirección. No es demasiado tarde, haz un copiar/pegar de tu pregunta actual en una nueva.
Dicho esto, hay un error en la segunda respuesta de Anonyme:"Autant pour moi.. Je mélange systématiquement RechDom et DLookUp (C'est la même chose, mais le premier s'utilise dans les formules, le second dans le code !!!) ". Las dos pueden escribirse perfectamente tanto en el código como en las fórmulas.
Para el resto, hay que saber qué es el error 2115; toca buscarlo en el didáctico.
Ahora hay un método mucho más simple para impedir registros duplicados, y tal vez sea precisamente ese error 2115; pasar por los índices.
Pidiendo para tu campo (aquí MaRef) "Indexé sans doublon", la entrada se bloqueará antes de su registro, y en ese caso el trozo de código es innecesario, salvo si quieres una alerta antes de que Access la haga, de lo contrario también es posible establecer como condición de validez del registro una fórmula del tipo " DCount(blablabla)=0" y añadir un mensaje en la propiedad "Mensaje si error".
Gracias por tu propuesta, pero este código no funciona en mi equipo.
¿Debía colocarse en Después de la Actualización de [Ref]?
He insertado el código y de inmediato apareció el siguiente mensaje: "Error de compilación: Se esperaba separatedor de lista o )" resaltando el punto y coma.
Supuse que había que reemplazarlo por una coma, pero cuando intento ejecutar el formulario, aparece otro mensaje indicando que RechDom es desconocido.
Soy muy novato en VBA y Access. ¿Puedes ayudarme?