Buscar y validar dato en formulario

Quisiera saber si me puedes ayudar tengo una base de datos en access 2010 la cual le ingreso la información por medio de un formulario quiero que cuando le ingrese el código en el formulario en me haga la validación del campo si existe me saque un mensaje que diga el registro ya existe y e lo deje editar y si no existe me diga código no existe desea crearlo y me deje ingresar el nuevo registro

2 respuestas

Respuesta
2
Para poder contestarte necesito tres cosas:
- El nombre del formulario donde trabajas
- El nombre de la tabla sobre la que se basa ese formulario
- El nombre del campo que recoge ese código que quieres validar.
Ya me dirás.
Los datos son los siguientes
El nombre del formulario es anticipos
El nombre de la tabla mayo
El nombre del campo es planilla
Ese campo lo tengo que no permite duplicados
Gracias
OK.
Al campo planilla le tienes que quitar "no permitir duplicados", para que no entre en conflicto con el código. El propio sistema que te voy a explicar ya te pillará los duplicados.
Para conseguir lo que pides tienes que hacer lo siguiente:
1.- Con el formulario anticipos en vista diseño te vas al campo planilla y sacas sus propiedades. Te vas a la pestaña eventos, y al evento "Después de actualizar" le escribes este código:
---
Private Sub planilla_AfterUpdate()
    Dim vPlan As Variant
    Dim vTPlan As Variant
    vPlan = Me.planilla.Value
    If IsNull(vPlan) Then Exit Sub
        'Creamos el recordset
    Dim rst As Recordset
    Set rst = currentDb.OpenRecordset("mayo",dbOpenSnapshot)
    If rst.RecordCount = 0 Then Exit Sub
    rst.MoveFirst
        'Recorremos los registros de la tabla para ver si ya
'existe el valor introducido
    Do Until rst.EOF
        vTPlan = rst.Fields("planilla").Value
                'Si existe lanza un aviso y abre el registro en cuestión
                'en el formulario anticipos
            If vTPlan=vPlan then
                msgbox "El código introducido ya existe", vbInformation, "YA EXISTE"
                DoCmd.Openform "anticipos",,,"[planilla] = '" & vPlan & "'"
                Exit Do
            End if
                'Si no existe te deja añadirlo como uno nuevo, sin comentarte nada
        rst.MoveNext
    Loop
        'Cerramos conexiones y liberamos memoria
    rst.Close
    Set rst = Nothing
End Sub
---
OJO: el código te funcionará si el campo planilla está definido como texto. Si estuviera definido como número deberías cambiar la línea que te he marcado en negrita por esta otra:
DoCmd.Openform "anticipos",,,"[planilla] = " & vPlan
2.- OK. Ahora, si el código introducido está duplicado te avisará y te lo mostrará para poderlo modificar. El formulario te aparecerá filtrado. Imagino que tendrás un botón apara añadir un nuevo registro. En vista diseño haces click con el botón derecho del ratón, seleccionas "generar evento" y en la pantalla que te sale "generar código", y le escribes el siguiente código:
---
Private Sub comando0_Click()
    If Me.FilterOn = True Then
        Me.FilterOn = False
    End If
    DoCmd.RunCommand acCmdRecordsGoToNew
End Sub
---
Y eso es todo. Ya me dirás cómo te ha ido la cosa.
Un saludo, y suerte!
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 495px; width: 1px; height: 1px; overflow: hidden;">Private Sub planilla_AfterUpdate()
    Dim vPlan As Variant
    Dim vTPlan As Variant
    vPlan = Me.planilla.Value
    If IsNull(vPlan) Then Exit Sub
        'Creamos el recordset
    Dim rst As Recordset
    Set rst = currentDb.OpenRecordset("mayo",dbOpenSnapshot)
    If rst.RecordCount = 0 Then Exit Sub
    rst.MoveFirst
        'Recorremos los registros de la tabla para ver si ya
'existe el valor introducido
    Do Until rst.EOF
        vTPlan = rst.Fields("planilla").Value
                'Si existe lanza un aviso y abre el registro en cuestión
                'en el formulario anticipos
            If vTPlan=vPlan then
                msgbox "El código introducido ya existe", vbInformation, "YA EXISTE"
                DoCmd.Openform "anticipos",,,"[planilla] = '" & vPlan & "'"
                Exit Do
            End if
                'Si no existe te deja añadirlo como uno nuevo, sin comentarte nada
        rst.MoveNext
    Loop
        'Cerramos conexiones y liberamos memoria
    rst.Close
    Set rst = Nothing
End Sub</div>
Respuesta
2

No cabe duda que el que sabe sabe.. me he apoyado mucho de sus comentarios y ayudas... muchísimas gracias a todos por sus respuestas sigamos así por gente que aporta y ayuda es que tenemos que agradecer.. gracias...! Totales,,,,!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas