** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - mensaje emergente número repetido
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

mensaje emergente número repetido

 Responder Responder
Autor
Mensaje
kraftwerk Ver desplegable
Nuevo
Nuevo


Unido: 14/Septiembre/2023
Localización: españa
Estado: Sin conexión
Puntos: 14
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita kraftwerk Cita  ResponderRespuesta Enlace directo a este mensaje Tema: mensaje emergente número repetido
    Enviado: 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
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14630
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
kraftwerk Ver desplegable
Nuevo
Nuevo


Unido: 14/Septiembre/2023
Localización: españa
Estado: Sin conexión
Puntos: 14
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita kraftwerk Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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

Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4787
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita javier.mil Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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)

 

 


Editado por javier.mil - 20/Septiembre/2023 a las 17:36
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable