¿Qué puedo hacer para que al ingresar el primer dato me avise mediante un msgbox que ya existe?

Tengo una base de datos de precios de automóviles, la clave principal es el código de marca y tengo un formulario para cargar nuevos registros, mi idea es que después de ingresar el primer dato (código de marca) en un textbox, si existe el registro que me avise mediante un msgbox que ya existe, como para no seguir completando el resto de los campos, obviamente que en caso de que no exista me permita seguir rellenando los campos siguientes, digamos que compruebe el campo código de marca después de actualizar.

1 respuesta

Respuesta
1
Entiendo que lo que quieres es que no se puedan duplicar los 'códigos de marca'.
Lo primero y más importante, debes poner ese campo como clave de la tabla (marcando la línea que tiene el campo, pinchas en el botón de la llave y guardas los cambios).
Supongamos que tu tabla se llama 'tblPreciosCoches' y tiene los siguientes campos: codigoMarca, nombreMarca y precio.
Te creas un formulario automático sobre esta tabla. Entra en el editor de Visual Basic y copia el siguiente código:
Option Compare Database
Option Explicit
Private Sub codigoMarca_AfterUpdate()   ' Se ejecuta cuando modifiquemos el código
    Dim aux As Variant
    aux = DLookup("codigoMarca", "tblPreciosCoches", "codigoMarca='" & Me.codigoMarca & "'")
    If IsNull(aux) Then
        ' Se trata de un código nuevo. Dejamos que siga
        Me.nombreMarca.Enabled = True
        Me.precio.Enabled = True
      Else
        Me.Undo ' Deshacemos el cambio porque vamos a ir al registro existente
        Me.Recordset.MoveFirst
        Do While Me.Recordset.Fields("codigoMarca") <> aux
            Me.Recordset.MoveNext
        Loop
        ' Activamos los campos por si quiere cambiarlos
        Me.nombreMarca.Enabled = False
        Me.precio.Enabled = False
    End If
End Sub
Private Sub Form_Current()  ' Se ejecuta cuando cambie de registro el formulario
    If Me.CurrentRecord > Me.Recordset.RecordCount Then
        ' Estamos en un registro nuevo. Nos colocamos en el código y desactivamos los otros campos
        Me.codigoMarca.SetFocus
        Me.nombreMarca.Enabled = False
        Me.precio.Enabled = False
      Else
        ' El registro ya existe. Activamos todos los campos
        Me.nombreMarca.Enabled = True
        Me.precio.Enabled = True
    End If
End Sub
Ese código te llevará al registro existente en caso de teclear una clave que ya exista y, si no existe, te activa los campos para que puedas rellenarlos.
OJO: Está hecho con los nombres de campos y tabla que me he inventado, te toca cambiarlos por los tuyos.
Hola amigo, si, lo que quiero es que no se dupliquen los códigos de marca (este campo es la clave principal en la tabla), he copiado el código y le cambie el nombre de los campos pero me da error no se si haré algo mal. La tabla se llama Tabla Rentas, el formulario se llama Mantenimiento, coloque un botón "Nuevo Código" y otro "Guardar Código", y los campos que tengo son CODMARCA - MARCA - MODELO - CLASE - PUERTAS - CARACTESPECIALES - y los precios son varios campos ya que van por año: 1994 - 1995 - 1996... hasta el 2009. Cuando me da error, me da la opción de depurar y me remarca en amarillo la linea:
aux = DLookup("CODMARCA", "Tabla_Rentas", "CODMARCA='" & Me.CODMARCA & "'") 
este codigo esta bueno, pero de ultima me sirve que simplemente al querer agregar un codigo de marca me salga un msgbox (despues de actualizar el campo CODMARCA) que me informe que el codigo ya existe, para no tener que seguir cargando el resto de los campos. Gracias nuevamente y espero tu respuesta. Saludos.
Lo único que se me ocurreo es que no esté bien puesto el nombre de la tabla. ¿Cómo se lla "Tabla Rentas" o "Tabla_Rentas"?. Si el nombre de la tabla lleva un blanco entre medias, tienes que ponerla entre corchete "[Tabla Rentas]", si no tiene blancos no es necesario.
Otra cosa, comprueba que el control que tienes asociado al campo CODMARCA de la tabla se llame también CODMARCA. Si tuviera otro nombre también sería un motivo de errores.
Este último error puedes saber si ocurre pulsando la opción 'depurar' de la menú 'depuración'. SI existe algún error de este tipo te lo va a decir antes de la ejecución.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas