Mensaje que me avise que el dato ya existe

Necesito hacer que al meter un dato si ya existe en la base me mande un mensaje de que ya se encuentra ese dato.

3 respuestas

Respuesta
1

Se puede utilizar la función DCount, si devuelve un cero = no existe, si devuelve un numero (el que sea, normalmente = 1) esta en la base el numero de veces que indique el numero.

IF DCount("*", "campo-de-la-tabla", "DatoXX= " & Dato-A-Verificar) Then Msfbox "El dato ya existe"

Otra alternativa (posiblemente la que ya se esta utilizando) es crear un índice sin repeticiones y el sistema devolverá un mensaje de error si se intenta repetir ese dato en ese conjunto.

DCount es una FUNCION y es de Access pero todas las funciones son simples comandos de acciones básicas que hay en todas partes y por lo tanto se pueden emular, la ventaja de las funciones es que se le aportan datos y devuelve un dato, una SQL devuelve el dato pero hay que utilizar recordset o argucias para poner el dato en el mismo lugar que la función.

¡Gracias!

Amigo si me sirve pero el amigo Julián me dio la solución más sencilla te agradezco por tu atención te mando un fuerte abrazo

De nada, utiliza aquello que mejor se adapte a tus intereses sin tener en cuenta (al menos por mi parte) de donde sale la solución.

Respuesta
1

Convendrías saber que debe hacer una vez hayas comprobado si existe. Por ejemplo, vamos a suponer que no quiero que se repita un valor de país.

Puedes ver que el cursor está todavía en el control País. Al pulsar Enter

Y al pulsar Aceptar el cursor se vuelve al control País para que lo cambies. En este caso, repito, en este caso, el código del evento Antes de Actualizar del control Pais es

Private Sub Pais_BeforeUpdate(Cancel As Integer)
If DCount("*", "clientes", "pais='" & Me.Pais & "'") >= 1 Then
MsgBox "Ese país ya existe", vbOKOnly, " Que lo sepas"
Cancel = True
End If
End Sub

¡Gracias!  Amigo Julian te agradezco como siempre en darme la respuesta mas simple pero efectiva ya te he mencionado que no se como agradece al grupo por su atencion solucion a mis dudas por que soy novato en esto pero me estoy apacionando y me gusta mucho gracias grupo, gracias Julian sigo aprendiendo y espero algun dia puedo ser lo sufientemente sabio como los del grupo y poder ayudar a mas gente. te mando un gran abrazo

Respuesta
1

Si el campo tiene una índice único puede validar con número de error 3022, sino utilice Dcount() como le explican, no obstante le recomiendo acostumbrarse hacerlo con SQL, porque cuando migre a un servidor de datos como MySQL o PostrgreSQL y las tablas no están vinculadas Dcount() no tendrá ningún efecto. Le dejo el código para capturar el error 3022

Private Sub algo_BeforeUpdate(Cancel As Integer)
On Error GoTo hay_error
 'Aqui va el código
hay_error_exit:
  Exit Sub
hay_error:
     If Err.Number = 3022 Then
        MsgBox "Ya existe el registro", vbCritical, "Error"
     Else
        MsgBox Err.Number & " " & Err.Description, vbCritical, "Error"
     End If
     Resume hay_error_exit
End Sub

¡Gracias! hola amigo gracias por tu respues efectivemente para migrar a un servidor pero no lo necesito tambien me fuiciona gracias te agradezco mucho por tu respuesta te mando un abrazo fuerte y gracias al grupo y a todos ustedes por exitir gente buena que quiere ayudar mil gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas