¿Cómo verificar que no existe el registro nuevo en access?

Quiero agregar un nuevo valor y que verifique que ese valor no exista. En caso de que así sea arroje un aviso.

3 Respuestas

Respuesta
1

Lo puedes hacer varias maneras .

1. El numero de obra lo puedes poner como clave principal en tu tabla, así cuando intentes agregar un numero de obra repetido saldrá un mensaje que no se permiten duplicados.

2. Puedes utilizar la funcion Dcount en el evento después de actualizar en tu cuadro de texto obra por ejemplo:

Private Sub Obra_AfterUpdate()
   if Dcount("*","NombreTabla","NombreCampo = " & me.Obra) > 0 then
      msgbox "El numero de obra ya esta registrado"
   end if
End Sub

Saludos.
------------------------------------------------------------------------------------------------------------
Vba Access
https://www.youtube.com/channel/UCjS6fHbImLyqtrcdHvJLRgg?sub_confirmation=1

Respuesta
2

No necesitas hacer clave el campo en cuestión. Basta con que en la pestaña General, en Indexado selecciones Si, sin duplicados. Pero esto tiene el inconveniente que sólo tiene efecto cuando va a guardar el registro. Por ejemplo

Puedes ver que el cursor está en el último control( en este caso hay 3 pero imagínate que hubiera 15). Los habrías rellenado y sólo cuando pulsaras Enter para pasar a otro registro, o fueras a cerrar el formulario te aparecería

Pero mientras tanto te has hinchado a rellenar cuadros de texto. Por eso, quizá te sea más cómodo dejarlo como Indexado=no y poner en el evento Al recibir el enfoque del cuadro de texto siguiente al que quieres evitar que se duplique

Private Sub Tomo_GotFocus()
Dim respuesta As Byte
If Me.NewRecord And DCount("*", "tabla1", "archivo='" & Me.Archivo & "'") >= 1 Then
respuesta = MsgBox("Ese archivo ya está guardado. ¿Aún así quieres guardarlo?", vbYesNo + vbInformation, "No digas que no te avisé")
If respuesta = vbYes Then
Exit Sub
ElseIf respuesta = vbNo Then
Archivo.SetFocus
End If
End If
End Sub

M e explico. Cuando el cursor llegue, en el ejemplo a Tomo, comprueba que es un nuevo registro, para evitar que cada vez que pusieras el cursor en el control Tomo de un registro que ya estuviera escrito te saliera el mensaje, y que ya hay, al menos, 1 registro con ese nombre. En caso de que sea así, te muestra el mensaje y tu decides. Si le dices si, continúa como si nada. Si le dices No, el cursor se vuelve al control Archivo para que lo cambies o ...

En el momento de pulsar Enter

Respuesta
1

Si un campo no acepta repetidos debe fijarse como Indexado sin repetidos y se controla con el evento del formulario "Al ocurrir un error", además agiliza las búsquedas.

TENGO ESTA TABLA

Observe que estoy editando y vuelvo anotar el expediente 1005, al intentar desplazarme a otro campo la captura del error me informa y no permite ir a otro registro, mediante este mensaje:

Si presione Aceptar me regresa al campo expediente para que lo corrija.

Este es el código del evento "Al ocurrir un error"

Private Sub Form_Error(DataErr As Integer, Response As Integer)
 If DataErr = 3022 Then
    MsgBox "Ya existe el expediente " & Me.expediente, vbInformation, "Cuidado"
    Me.expediente.SetFocus
 End If
 Response = acDataErrContinue
End Sub

Para eso se crearon los códigos de error lo que se debe es aprender a utilizarlos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas