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 de Neckkito Nck
2
2
Neckkito Nck, Access... ser o no ser. Esa es la cuestión
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>
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,,,,!