Formulario de acceso
De nuevo como ves ya te hago caso y abro una consulta nueva je je. He visto por hay como se hace un formulario de acceso mediante login y contraseña en el cual se fija la fecha y hora y quien accedió a la aplicación, para ello creaba 3 tablas:
tabla Acceso: id_acceso; y Acceso (campos)
tabla Usuarios: id_usuario;Login;Password;id_acceso
tabla Bitacora: id_usuario;Fc_ingreso;Hr_ingreso(campos de fecha y hora)
Luego relaciono las tablas empleados y bitácora mediante el id_usuario.
Luego hizo un formulario sobre la tabla bitácora y solo dejo los campos de fecha y hora dejándolos bloqueados. Luego creo y cuadro combinado para atraer a los usuarios y lo vinculo a guardar en el id_usuario. Todo esto sin código y hasta hay bien, pero el problema es que luego ejecuta el código pero ya lo tienen escrito y lo pega y hay partes del código que no se ven (tenia un link de descarga del mismo pero no funciona) se que usa una función dlookup y salta avisos si el campo usuario esta vacío o si la contraseña no es correcta o esta vacía y abre un formulario dependiendo del tipo de acceso que tenga asignado el usuario.
¿Mi pregunta es como puedo hacer algo así yo para mi aplicación? Porque me interesa saber quien entro entro y cuando je je. Estoy intentando aprender a programar para no preguntar tanto pero creo que esto se me va de las manos la verdad (eso si lo sigo untentando de todas maneras)
1 respuesta
Este ejemplo de Neckkito, que es justo lo que pides y está explicado paso a paso:
http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/92-ejemplos-explicados/ejemplos-de-seguridad/117-contrasena-y-control-acceso
Además, si quieres controlar quien sale, tienes este otro:
http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/92-ejemplos-explicados/ejemplos-de-seguridad/118-control-salida-usuarios
Si ya lo vi y me gusto más el de control de acceso según usuario lo que pasa es que yo lo del FChivato no le veo la utilización en mi aplicación y ademas podría haber mas de un usuario a la vez, yo lo que quiero es que según el tipo de usuario (EJ:Admin) que sea habrá un formulario y si es usuario normal otro distinto con menos opciones.
como puedo yo adaptar ese código a mi aplicación o el del ejemplo que me diste tu pero añadiendo que mire el tipo de acceso?
Un saludo
Tienes estos otros dos ejemplos:
http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/seguridad/92-ejemplos-explicados/ejemplos-de-seguridad/193-acceso-segun-administrador-o-usuario
http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/seguridad/94-ejemplos-explicados/ejemplos-de-aplicaciones/210-acceso-segun-administrador-multiples-usuarios
Muy bien intentare adaptar uno para lo que quiero, ahora si voy a crear 3 tipos de usuarios:
administrador;técnico;usuario.
El del administrador y del técnico solo quiero que el de técnico se diferencie en una cosa y es que puedan dar de alta usuarios añadiéndolos a la tabla pero que solo puedan asignar el tipo de acceso de usuario es decir que este limitado, eso como lo haría?había pensado en ocultar el campo en el formulario pero luego el código al no encontrar tipo de acceso crearía un error no? otra cosa es crear una tabla con los tres tipos(administrador, técnico,usuario) y otra tabla con solo uno (usuario) y de esa crearle un cuadro combinado en el formulario para que solo pueda elegir ese y que guarde el valor en el campo de la tabla.
No se si esto valdría o estoy diciendo una locura la verdad je je.
Un saludo
Por cierto he visto tu ejemplo sobre asignar citas a las horas libres me lo baje y me parece que esta genial, yo le quiero añadir desde las 8 a las 19 y que las citas sean cada 15 min yo le cambie esto:
For i = 8 To 19
For j = 0 To 15 Step 15 je je pero solo me salen las horas a en punto y a 15 es decir 8:00; 8:15; 9:00; 9:15.
Mi intención es instalar la aplicación para que puedan usarla varios equipos (dividiendo base de datos en dos) la vez espero que funcione je je. este formato de citas sera viable en mi aplicación?ya que van a estar varios usuarios a la vez y lo del formulario chivato con varios usuarios a la vez? es que para lo que yo quiero que es que ciertos usuarios no tengan acceso a ciertos datos yo creo que cualquier ejemplo de varios usuarios según permisos de los que me pusiste me valdría o ese del formulario chivato es mejor que opinas como experto?
Y por ultimo de esta parrafada como hago yo cuando una vez este terminada y ponga como inicio el del login nadie pueda modificar nada de la base de datos?solo quiero poder tener acceso a las tablas etc yo je je lo demás que no puedan modificar nada.
Un saludo
Te comento a las cuestiones que planteas:
1º/ No te hace falta crear una tabla con los tres tipos de usuario y luego otra con el tipo usuario. Lo que puedes hacer es, usando el formulario Chivato (que estará siempre abierto oculto y con el tipo de usuario activo), que cuando se abra el formulario, o el registro del formulario (no se como lo vas a montar), que el cuadro combinado tome como valores los 3 o solo el de usuario. Le puedes poner, por ejemplo, en el evento al activar registro del formulario, o al entrar del combo (si tu cuadro se llama cboUsuario):
If Forms!FChivato.txtTipoUser=3 'Si 3 es tu tipo usuario
Me.cboUsuario.RowSource="SELECT * FROM tuTabla WHERE TipoUser=3"
else
Me.cboUsuario.RowSource="SELECT * FROM tuTabla"
End if
Me. CboUsuario. Requery
2º/ Sobre el ejemplo asignar horas, tienes mal una cosita:si pones for j=0 to 15 step 15, normal que sólo te salgan las horas en punto y las y cuarto. Tendrías que poner for j=0 to 45 step 15.
3º/ Si divides la base en dos, en un archivo (el que pongas en un servidor) tendrás sólo las tablas, y en el otro, que será el que distribuyas por los otros PCs, el resto de elementos. Entonces, el formulario chivato sólo va a recoger el valor del usuario activo en cada pc.
Dale un vistazo a la sección de Teoría/practica->cosas que es bueno saber de la web de Neckkito, en concreto los artículos de seguridad y back end-front end
A ver si me explico:
Tienes un formulario de acceso, en el que eliges nombre de usuario y contraseña.
Una vez que los introduces, en tu formulario chivato, tienes el tipo de usuario (que lo buscará en la tabla correspondiente) en el cuadro de texto txtTipoUser.
Supongo que tendrás otro formulario de alta de usuarios, que tendrá un combo para elegir el tipo de usuario (administrador, técnico, usuario), que cogerá los valores de una tabla (TTipoUsuario, con campos ID y TipoUsuario, por ejemplo)
Pues en el evento Al entrar de ese combo, es donde le tienes que decir que se cambie el origen del combo:
If Forms!FChivato.txtTipoUser=1 'Si 1 es tu tipo administrador
'El combo muestra todos los usuarios
Me.cboUsuario.RowSource="SELECT * FROM TTipoUsuario"
else 'Si el usuario es técnico (2) o usuario (3), muestra solo el tipo usuario
Me.cboUsuario.RowSource="SELECT * FROM tuTabla WHERE ID =3"
End if
'Actualizas el combo
Me. CboUsuario. Requery
Y listo.
osea yo creo el formulario dar de alta a los usuarios y en el evento al hacer click del combo le pongo ese código no?
Un saludo
otra cosa voy a usar el ejemplo de neckkito de de entrada admin multiuser y también quiero usar el de contraseña 2 (que es para cambiar tu mismo tu contraseña) la tabla se llama en las dos igual TPass lo que pasa que en uno tiene mas campos que el otro por eso no pasaría nada no?con añadir a mi bd la mas completa del otro ejemplo solo he de incorporar los formularios y demás no?
Un saludo
debería de abrir otra consulta pero no me dejo. te dejo aquí un link para que me mires el planteamiento de un informe que me falta una cosa por hacer y no soy capaz quiero que me cuente el numero de vales entregados y eso ya lo tengo conseguido pero a la vez quiero también que cuente el numero de familiares pero no soy capaz que en este caso seria 9 y a mi si le creo un campo y le puse =suma([Nº MIEMBROS UNIDAD FAMILIAR]) y me lo suma pero me suma 3 por cada registro del segundo usuario y 6 por el primero es decir me da 15,me gustaría que me explicaras que tengo mal hecho para comprenderlo.
<a>http://filebig.net/files/LLrKBRLMM4</a>
por cierto como hao para que cuando entre como un usuario que no sea administrador nadie pueda ver tablas ni formularios,etc ni modificar nada en las cintas?
El código en el evento "Al entrar" del cuadro combinado.
No hay problema en combinar los dos ejemplos, siempre que adaptes el código a tu caso particular.
No podías abrir una nueva consulta, porque tenía problemas para responder preguntas ( no me dejaba el sistema) y pase a no disponible mientras me lo solucionaban. Ahora ya puedes abrirla. Y dime una cosa, que informe quieres que mire. Dime el nombre, porque tienes muchos y no me voy a poner a mirarlos todos...
De todas formas, creo que intentas correr cuando aun no sabes andar, como se suele decir, y estas intentado hacer una BD bastante compleja sin saber nada, o casi nada de código vba. Mi recomendación es que te tomes un tiempo para mirarte un manual, que te ayudará a comprender y adaptar los ejemplos a tu BD, y desarrollar las ideas que tienes para la misma.
Si ya se que estoy corriendo antes de empezar andar je je me estoy lleyendo el manual de eduardo olaz que me parece bastante bueno. Pero es que la "necesito" para trabajar ya que sino trabajaría el doble de otra forma rellenando mil papeles iguales varias veces.
El informe es el de REGISTRO DE VALES.
En principio en el informe no tienes nada mal hecho, lo que pasa que lo que tu entiendes que tiene que hacer y lo que access entiende, es distinto.
Si pones, como hiciste, =suma([Nº MIEMBROS UNIDAD FAMILIAR]), tu entiendes que te tiene que sumar el valor de los dos cuadros de texto que ves en tu informe (6+3), pero como access trabaja sobre las tablas/consultas, y tu consulta REGISTRO VALES tiene 4 registros, suma 6+3+3+3, con lo que el resultado que muestra el cmapo es correcto desde el punto de vista de access.
La solución, hacerte una función que te haga el cálculo, y asignarla como origen a ese cuadro de texto.
Es lo que te va en el informe: http://www.filebig.net/files/iqGvmRxrXN
Yo seguí los manuales de Eduardo y Neckkito, y encontré más ameno y que toca más temas el de Neckkito. El de Eduardo es más teórico, desde mi punto de vista.
Ya he visto el código del texbox eso valdría para cualquier otro informe que necesitara sumar el numero de beneficiarios si la copio en el texbox de ese informe no?
Espero no muy tarde manejarme ya mucho mejor y lo practico que conste, pero esto lo estoy haciendo porque lo necesito sino no tendría prisa y gente depende de ello (usuarios).
Un saludo y muchas gracias de nuevo.
No, la función que te puse sólo funciona en ese informe (es private, y no public).
Si lo necesitas para otro informe, tendrás que construir tu una funcion similar, teniendo en cuanta la tabla/consulta en la que se base el informe, y el campo a sumar.
No ha eso me refería a la estructura de la función.
Mira aquí ya tengo aquí lo que quiero añadir como acceso a mi bd modificado de los ejemplos de neckkito y incorporare el tuyo de las citas también esto habré simplemente dos formularios dependiendo si es un nivel o otro técnico o usuario que seria el principal de mi bd (tenicos) y uno que haré que solo traerá lo de la parte Principal (usuarios) el problema que me planteo es que creo que un técnico podrá dar cualquier tipo de tipo de usuario y eso solo quiero tenerlo yo un técnico solo debería poder dar altas de usuarios.
El problema lo resolvería si pongo en el formulario de datos de acceso el cbo que me dijiste y le pongo ese código?
If Forms!FChivato.txtTipoUser=1 'Si 1 es tu tipo administrador
'El combo muestra todos los usuarios
Me.cboUsuario.RowSource="SELECT * FROM TTipoUsuario"
else 'Si el usuario es técnico (2) o usuario (3), muestra solo el tipo usuario
Me.cboUsuario.RowSource="SELECT * FROM tuTabla WHERE ID =3"
End if
'Actualizas el combo
Me.cboUsuario.Requery
Un Saludo
A ver ..., el código que te di, es para poner en un combo en un formulario para dar de alta nuevos usuarios, no en el formulario de acceso, pues ahí no tiene ningún sentido.
En el formulario de acceso sólo tienes que poner dos cuadros, para el nombre y la contraseña.
Si quieres dar de alta a usuarios nuevos y que a su vez los usuarios puedan dar altas nuevas, con las limitaciones que comentas, tendrás que hacer un formulario para dar las altas, sobre la tabla que guardes los usuarios, y en ese formulario tendrás que poner el cuadro combinado con el código ese en su evento al entrar.
No lo puse en el formulario de alta de trabajadores pero no me funcione correctamente.
http://filebig.net/files/7tdascFyKN
esto es una adaptación para pasarlo lueo a mi bd.
Un saldo
prueba haber con este
http://filebig.net/files/NLYsTfP6ZW
esta como siempre no toque nada en el access
pues no se a que puede ser debido yo lo que hice es importar a una base de datos nueva los formularios, tablas etc... de los otros ejemplos y ajustarla a mis formularios.
Cuando llegue a casa la hago desde cero y te la envío.
Un saludo
Haber si esta la puedes abrir, esta la hice sin importar nada.y solo tiene en ella lo que seria el acceso según usuario y para dar de alta usuario nuevo según ejemplos Neckkito.
Quiero que tenga 3 tipos de usuarios (1.Administrador,2.Técnico,3.Voluntarios).
Tanto el administrador como los técnicos abrirán el mismo formulario aquí es el de Técnico (que sera Formulario de Navegación en mi otra BD que le cambiare el nombre por Técnico) y esto funciona bien al entrar me abre el formulario correctamente y estos solo se deberían diferenciar en que un técnico en el formulario de nuevo usuario solo pueda dar de alta a usuarios tipo 3 para ello incluí un cbo llamada cboUser en el formulario de FDatosPass y añadí el código que tu me dijiste en el evento cboUser_Enter() pero me da error. y el administrador pueda dar de alta cualquier tipo de usuario.
Otro error que me da es que cuando entro con tipo de usuario 3 me abre el formulario de usuarios bien pero me abre también el de Técnico.
usuario:kike
Pass:prueba
<a>http://filebig.net/files/AxJDYevtH7</a>
Un saludo
Ahora si puedo abrirla.
Sigues poniendo en el sitio que no es el combo. Tienes que ponerlo en el formulario de alta de usuarios, que entiendo que es FTrabajadores (lo que no entiendo es para que quieres FDatosPass).
Es en FTrabajadores donde tienes que cambiar el cuadro de texto de categoría por un cuadro combinado con el código que te puse. Ojo! Que el código tiene un pequeño fallo del que no te diste cuenta (y por eso te manda el error de sintaxis), y es que le falta un "Then"
If Forms!FChivato.txtTipoUser = 1 Then
Me.cboUsuario.RowSource = "SELECT * FROM tuTabla WHERE TipoUser=3"
Else
Me.cboUsuario.RowSource = "SELECT * FROM tuTabla"
End If
Me. CboUsuario. Requery
Otro error, es que no cambiaste (¡Otra vez!) Los nombres de los campos del código propuesto por los que tu estás usando, con lo que te saldrán nuevos errores (por ejemplo, tu combo se llama cboUser, no cboUsuario...). Y veo que tampoco me haces caso en el evento en que poner el código, aunque esto no es tan importante y seguramente te funcione igual.
El formulario Técnico te lo abre porque así lo pusiste en el código. Si le pones DoCmd. OpenForm "Técnico" antes de comprobar el tipo de user, normal que te lo abra en cualquier caso, je je.
Realmente la tabla que tiene el tipo de usuario es FPass y el formulario para eso es FDatosPass.
Por lo que entiendo yo del ejemplo que cogí el FTrabajadores es donde primero dan de alta el usuario nuevo y luego en FDatosPass es donde le asigna la contraseña. Mi pregunta es no me valdría dejando solo la tabla TPass y el FDatosPass y añadiendo hay el combo?Así funcionaria?
Como pongo en el código para que no me habrá con usuario el de técnico me falta alguna linea de código no?
Un saludo
Según tienes montado lo que me pasaste, el formulario de alta ( el que se abre al dar al botón nuevo usuario) es FTrabajadores. Es en ese donde debes poner el combo.
Si FDatosPass es para asignar/cambiar la contraseña, ¿para qué quieres poner el tipo de usuario, y más aun, dejar que se pueda cambiar? No tiene ningún sentido...
Para lo del formulario técnico no te falta ninguna linea, sino al contrario, como te decía antes, te sobra una:
'Abrimos el formulario FMenu
DoCmd. OpenForm "Técnico"
Además, lo que veo que te falta es ponerle lo que quieres que haga si entras como administrador (vCompruebo=1)
- Compartir respuesta
Hola en relación con este tema estoy utilizando este ejemplo pero algo no me funciona, me podrás ayudar, me sale un error de compilación - Leidy Hulieth Mendoza Romero