Imprimir página | Cerrar ventana

mensaje emergente número repetido

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86784
Fecha de impresión: 27/Marzo/2026 a las 02:46


Tema: mensaje emergente número repetido
Publicado por: kraftwerk
Asunto: mensaje emergente número repetido
Fecha de publicación: 18/Septiembre/2023 a las 13:36
Hola,
necesitaría ayuda de un problema que tengo que no resuelvo.
Tengo una columna serial que la tengo configurada como indexada con SI (Sin duplicados), el problema que tengo es que si se repite un número me salta a modo depurador, me gustaría que en vez de eso me saltara un mensaje de "número repetido" y nada más.
He probado con varios modelos que he visto por internet con DLookup pero no acabo de conseguirlo, se puede hacer? o con la columna indexada con SI ya no es posible que muestre un mensaje?

Muchas Gracias



Respuestas:
Publicado por: xavi
Fecha de publicación: 18/Septiembre/2023 a las 16:40
Hola,

Yo probaría utilizando el BeforeUpdate (Antes de actualizar) del control para hacer un DCount para contar cuantos registros tienen ese valor en el campo "Serial". Al ser un campo sin duplicados y estar utilizando el "Antes de actualizar", teóricamente una cuenta > 0 implica que ya existe. Con un DLookup también podría valer.

El evento BeforeUpdate tiene un argumento Cancel que permite cancelar la inserción del valor lo que evitaría el mensaje de error.

Prueba y nos cuentas

Un saludo

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: kraftwerk
Fecha de publicación: 19/Septiembre/2023 a las 12:25
Hola,
finalmente lo he conseguido con Dcount:
Private Sub serial_BeforeUpdate(Cancel As Integer)
If DCount("*", "trazabilidad", "serial='" & Me.serial.Value & "' and serial='" & Me.serial.Value & "'") > 0 Then
MsgBox "NÚMERO REPETIDO", vbInformation, "!!!ATT!!! NÚMERO DUPLICADO"
Cancel = True
End If
End Sub

Estoy intentando de colocar una ventana en el formulario en el que se vea el último nº de serie introducido, pero no hay manera, lo estoy haciendo con AfterUpdate pero nada.
Con qué función lo podría hacer?

Gracias



Publicado por: javier.mil
Fecha de publicación: 20/Septiembre/2023 a las 17:31
Hola,

Para saber tu ultimo numero introducido podrías probar con

Application.DoCmd.GoToRecord acDataForm, "MiCampoId", acLast
Msgbox "MiCampoId"

Cambia "MiCampoId" por cualquier campo de tu formulario

Y prueba de ponerlo en el evento "OnCurrent"



Otra opción Suponiendo que el formulario tenga el origen de los datos en otra tabla o en la misma seria

Const cMiCampoAutonumerico = "Id"
Const cMiTabla = "Table1"
    MsgBox DMax(cMiCampoAutonumerico, cMiTabla)

 

 


-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info






Imprimir página | Cerrar ventana