Ingreso de datos automáticos en registros

Te cuento que problema tengo y creo que con un código será fácil de solucionar pero no se como hacerlo..

Tengo dos tablas así cada una con dos columnas.. :

Usuarios. (nombre ; Contraseña)

Principal (Proceso1 ; Usuario)

La columna Proceso1 tiene los datos de origen de otra tabla que se llama Procesos y tiene 3 procesos como registros fijos. Cortado – Pulido – Empaquetado

La idea es que:

Cuando un usuario selecciona un proceso en la tabla Principal instantáneamente le pida la contraseña y si la contraseña coincide con un usuario en la tabla Usuarios se deje agregar el dato e instantáneamente se coloque el nombre del usuario en campo usuario de la tabal principal..

Aquí un ejemplo..

Tabla usuario

Nombre Contraseña

Mauricio 123

Tabla Procesos:

Proceso

Cortado

Pulido

Empaquetado

Ahora en el formulario principal debería ser así:

Cuando en la columna Proceso1 selecciono Cortado pedir contraseña. Y si ingreso 123

El registro en la tabla principal debería quedar así:

Proceso1 Usuario

Cortado Mauricio

Ese proceso debería aparecer automático al ingresar la contraseña…

Respuesta
1

He tratado de ajustarme a tus datos. Suponiendo que el cuadro de texto o el combinado se llame proceso1, en el formulario pon

Private Sub Proceso1_BeforeUpdate(Cancel As Integer)
Dim respuesta As Integer
respuesta = InputBox("Porfa, pon la contraseña", "Si fallas serás desintegrado")
If IsNull(DCount("contraseña", "usuario", "contraseña= '" & respuesta & "'")) Then
DoCmd.CancelEvent
Else
Usuario = DLookup("nombre", "usuario", "contraseña= '" & respuesta & "'")

End If
End Sub

Así cuando escribas o elijas un valor, antes de aceptarlo te preguntará una clave. Si no coincide con ninguna que tienes guardad en la tabla Usuario, no avanza. Pero si aciertas, además de guardarlo en Proceso1, en el cuadro usuario te aparece el nombre del que le corresponde esa clave.

Hombre... ya funciona el código estaba perfecto! Era yo que tenía un problema con un nombre de campo! Mil mil gracias!

Solo me quedaría la seguridad de que si la contraseña no coincide que la vuelva a pedir y no se agregue ningún dato hasta que una contraseña sea correcta! Y si es posible que se tape la contreseña con asteriscos!

MIL MIL GRACIAS!

Si quieres, mándame un mensaje a [email protected] y te mando un ejemplo, que honestamente creo que es mejor, para "asegurar" la base.

1 respuesta más de otro experto

Respuesta
1

Vamos a ver qué tal:

En el evento "Antes de actualizar" de tu cuadro combinado Proceso1 le generas este código:

Private Sub Proceso1_BeforeUpdate(Cancel As Integer)
'Si no hay valor, sales sin más
If Nz(Me.Proceso1,"")="" Then Exit Sub
'Si hay valor, pides la contraseña
Dim elPass as Variant
elPass=InputBox("Escriba su contraseña")
'La comparas
If DCount("*","Usuarios","Contraseña='" & elPass & "'")>0 Then
   Me.Usuario=DLookUp("Nombre","Usuarios","Contraseña='" & elPass & "'") Then
Else
   Msgbox "No hay ningún usuario con esa Contraseña", vbInformation,"Error"
   Cancel=True
End If
End Sub

Si quieres ocultar la contraseña mientras la escribes, busca en la web de Neckkito Nck  el ejemplo "Fabricando nuestro InputBox" y aplícalo a tu BD.

Un saludo.


Un nuevo foro de access, visítanos: http://nksvaccessolutions.com/Foro/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas