|
Página 1 de 1
|
Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A...
Autor |
Mensaje |
OneErick
Usuario
Registrado: Noviembre 2012
Mensajes: 33
Edad: 32
|
Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
Hola amigos pues necesito una ayudita con esto que se me presenta en un sistema, es posible cargar un dato de la BD a un evento click para luego ese dato llevarlo a un texbox, osea lo que quiciera hacer es algo como esto:
Public Sub Button1_Click()
Button2.Visible = False
HPanel2.Visible = False
Button3.Visible = False
HPanel3.Visible = False
usuario.Text = "Carlos"
password.SetFocus
End
Lo que quiero esque en " usuario.Text = "Carlos" " se carge ese usuario directo de la base de datos.. OJO: son 3 usuarios y cada uno tiene un nivel de acceso diferente..
lo que no se es como hacerlo.. tengo la idea pero no la concreto no se si tengo que hacer una funcion aparte o puedo ejecutar un query directamente desde el evento click.. quiciera que me ayudaran a aclarar esta dudita..
yo estaba haciendo algo como esto pero creo que esta un poco errado por las dudas de la funcion ademas que tengo problemas con la sintaxis del query :S
Public Sub Form_Open()
Dim query As Result
conexion.conectar()
query = conexion.cn.Exec("Selec From usuario where acceso= Administrador")
TextBox1.Text = query["usuario"]
End
Public Sub Button1_Click()
Button2.Visible = False
HPanel2.Visible = False
Button3.Visible = False
HPanel3.Visible = False
usuario.Text = "Carlos"
password.SetFocus
End
El problema es que lo estoy haciendo en form_open y no se como hacerlo en el evento click porfa alguien ayudeme
Aqui la tabla Usuario por si alguien quiere ayudar mas:
usuario CREATE TABLE `usuario` (
`id_usuario` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`usuario` varchar(254) DEFAULT NULL,
`password` varchar(254) DEFAULT NULL,
`acceso` varchar(254) DEFAULT NULL,
PRIMARY KEY (`id_usuario`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
última edición por OneErick el Miercoles, 20 Marzo 2013, 18:08; editado 2 veces
|
#1 Miercoles, 20 Marzo 2013, 17:30 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
OneErick, tienes que replantearte algunos conceptos básicos antes de asumir la lógica de todo esto.
El mismo título del hilo demuestra que no has pillado bien la idea:
Citar: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
Un Evento es un procedimiento que se dispara en un momento concreto, es decir, una serie de ordenes. No se puede cargar nada en él
Citar: Lo que quiero esque en " usuario.Text = "Carlos" " se carge ese usuario directo de la base de datos.. OJO: son 3 usuarios y cada uno tiene un nivel de acceso diferente..
Usuario.text="Carlos" es una comparación. Su resultado es cierto o falso, no se puede cargar nada en ella (puedes cargar otra cadena dentro de el textbox usuario, pero nada más).
Citar: El problema es que lo estoy haciendo en form_open...
Tienes que aprender en qué momento se dispara qué evento y lo que quieres hacer entonces.
supongo, viendo tu código, que lo que quieres es comprobar si el usuario tiene acceso administrador o no. la lógica es la siguiente
Abres el formulario
esperas que el usuario teclee su nombre y su clave
cuando lo ha hecho y pulsado el botón "bValidar" (Nunca button1, que eso no dice nada. Pon nombre significativo a tus controles)
comprobamos en la base de datos su nivel
El código sería, más o menos
public sub bValidad_click()
dim query As Result
conexion.conectar()
query = conexion.cn.Exec("Selec * From usuario where usuario= \"" & txtNombre.Text & "\"") 'buscas el registro que coincida con el nick tecleado
if not query.Available then 'no se devolvieron registros
message.Error("No existe el usuario")
return
endif
if txtclave <> query!password then 'la clave no coincide
message("Clave errónea")
return
end if
If query!acceso="Administrador" then
mimodulopublico.usuarioAcceso="Administrador" '(es conveniente que tengas un módulo accesible desde todas partes donde guardar una variable publica -usuarioAcceso en el ejemplo- con el acceso, para futuras referencias)
' .... pones visible lo que quieras o haces lo que quieras
else
'...ocultas lo que quieras o haces lo que quieras.
endif
Return
No uses el código y ya está. Estúdialo.
Suerte.
última edición por shordi el Miercoles, 20 Marzo 2013, 18:51; editado 1 vez
|
#2 Miercoles, 20 Marzo 2013, 18:50 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
Justo ahora estoy trabajando en algo parecido para un programa mío. Creo un procedimiento para buscar al usuario en la base de datos, si existe compruebo la contraseña y por último el tipo de usuario, para abrir uno u otro formulario. La ventaja de tenerlo en un procedimiento es que puedo llamarlo desde cualquier evento de uno o más controles, sin volver a escribirlo todo.
Public Sub comprobar_usuario()
Dim hres As Result 'declaramos variables locales
Dim Clave As String
Dim Clave2 As String
Dim Clave3 As String
Dim Clave4 As String
Dim filtro As String
hconn = Modcon.ConectarBase() 'llamamos a la conexión
filtro = txtuser.text 'asignamos a la variable filtro el valor de txtuser.text
hres = hconn.Exec("Select * from usuarios where nombre like '" & filtro & "' ") 'ejecutamos la consulta
If txtuser.text = "" Then 'comprobamos que el campo nombre no este vacío
Message.Warning("Ingrese su nombre")
txtuser.SetFocus 'si está vacío ponemos el foco en el control
Else If hres.Available = False Then 'comprobamos si el usuario existe o no
Message("No existe el usuario")
Else
Clave = hres["id_usuario"] 'asignamos a las variables los valores recuperados desde la base de datos
Clave2 = hres["tipo_usuario"]
Clave3 = hres["nombre"]
Clave4 = hres["password"]
If txtuser.text = Clave3 And txtpass.text = "" Then 'comprobamos que escriba la contraseña
Message.Info("Ingrese su Contraseña ")
txtpass.SetFocus
Else If txtuser.text = Clave3 And txtpass.text <> Clave4 Then 'comprobamos si la contraseña no coincide
Message.Info("Contraseña incorrecta")
txtpass.SetFocus
Else If txtuser.text = Clave3 And txtpass.text = Clave4 Then 'comprobamos que la contraseña coincida
If Clave2 = "Admin" Then 'si el usuario es admin
Message.Info("Bienvenido" " " & Clave3 & " " "al sistema de administración")
Fadmin.show
Me.close
Else 'si el usuario es un usuario común
Message.Info("Bienvenido" " " & Clave3 & " " " al sistema ")
Fingreso.Show
Me.Close
Endif
Endif
Endif
End
Espero te sirva, aunque sé que es mejorable. Si no quieres escribir los nombres puedes cargarlos en un listbox desde la base de datos y elegirlo, pero esa ya es otra historia. Analízalo y si te sirve, adelante.
Saludos
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
última edición por Dani26 el Miercoles, 20 Marzo 2013, 19:23; editado 2 veces
|
#3 Miercoles, 20 Marzo 2013, 19:21 |
|
|
OneErick
Usuario
Registrado: Noviembre 2012
Mensajes: 33
Edad: 32
|
Re: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
Creo que no me supe explicar:
cheken esto
como muestra la imagen tengo 3 usuarios cada uno de ellos con su nivel de accseso
ya la verificación del nivel de acceso lo hice con eso no hay problema.
Como pueden ver en la imagen, alado del nombre hay un boton con una imagen de usuario hasta ahora al darle click en ese boton pasa este evento
Public Sub Button1_Click()
Button2.Visible = False
HPanel2.Visible = False
Button3.Visible = False
HPanel3.Visible = False
usuario.Text = "Carlos"
password.SetFocus
End
el TEXBOX de usuario se llena con la palabra Carlos, pero esto es algo genérico si en algún momento alguien quiere cambiar todos los usuarios
la verdadera idea es que ese boton cargue el usuario directamente de la base de datos, en palabras sencillas usuario.Text = "seleccioname de la base de datos el usuario donde su acceso sea igual a auditor"
"Auditor, cambiaria a administrador o a usuario en los otros botones."
asi se llenaria el TEXBOX con un dato de la BD y así si carlos decide cambiar su nombre de usuario de carlos a carlos02 se actulizaria de forma el siguiente inisio de sesion.
Ahora si me explique mejor creo..
|
#4 Miercoles, 20 Marzo 2013, 21:31 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
Citar: query = conexion.cn.Exec("Selec From usuario where acceso= Administrador")
Para empezar, otra vez te falta la "t" ,ahora en la palabra select , imposible que te funcione esa consulta.
Public Sub Button1_Click()
Dim query As Result
conexion.conectar()
query = conexion.cn.Exec("Select * from usuarios where acceso= Administrador")
Button2.Visible = False
HPanel2.Visible = False
Button3.Visible = False
HPanel3.Visible = False
usuario.Text = query["usuario"]
password.SetFocus
End
Sería como yo lo haría.Pon todo en el evento click del botón , la misma consulta te da la solución. Recuerda que puedes probar las consultas desde el phpmyadmin, que te marca cual es el error.
Saludos
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
última edición por Dani26 el Miercoles, 20 Marzo 2013, 22:35; editado 1 vez
|
#5 Miercoles, 20 Marzo 2013, 22:28 |
|
|
OneErick
Usuario
Registrado: Noviembre 2012
Mensajes: 33
Edad: 32
|
Re: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
De esa manera no se porque pero no funciona dice: Result is not available o algo así XD, pero antes de ver esa forma que me ofreciste yo utilice esta y me funciono
Dim buscar As Result
Button1.Visible = False
HPanel1.Visible = False
Button2.Visible = False
HPanel2.Visible = False
buscar = conexion.cn.Exec("select * from usuario where acceso='" & acc3.Text & "' ")
usuario.Text = buscar["Usuario"]
solo que tuve que colocar un TexBox oculto y en la propiedad enable la puse -> false: llamado acc, acc2, acc3 para cada caso y en la propiedad Tex: Su nivel de acceso y listo
Creo que no es la mejor manera pero fue la que funciono además de que la pensé YO ^^.
|
#6 Miercoles, 20 Marzo 2013, 22:56 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
solo que tuve que colocar un TexBox oculto
Está bien que la solución la hayas pensado sólo tu, y no esté copiada de algún otro lugar, en eso tengo que darte la enhorabuena porque demuestras que quieres aprender. Pero ahora analiza la frase tuya que cito arriba: en realidad estás usando un control para almacenar un dato, un control oculto a la vista del usuario. ¿No es eso en definitiva una variable de tipo String? En adelante no hagas eso nunca más y usa variables si no quieres que venga Eric S. Raymond a matarte!!!
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#7 Miercoles, 20 Marzo 2013, 23:04 |
|
|
OneErick
Usuario
Registrado: Noviembre 2012
Mensajes: 33
Edad: 32
|
Re: Cargar Un Dato De La BD A Un "Evento Click" Para Luego Llevarlo A Un Texbox
Bueno en eso tienes toda la razón.. el problema es que desde un principio no quise hacerlo de esa forma por lo "Genérico" pero al ver que no me funciona de otra forma dado que no se como hacerlo, pues lo hice de esa manera para que funcionara..
PD: Estoy abierto a opiniones e incluso modificaciones si estas funcionan y me enseñan.. ^^.
|
#8 Miercoles, 20 Marzo 2013, 23:29 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|