Hola a tod@s, perdonen si en esta ocasion escribo sin acentos pero es que aun no he podido reestablecer mi windows y sigo trabajando con la version "buteable" de Ubuntu, pero bueno...mientras tanto ya tenemos la forma que autentifica al usuario, pero en realidad nuestra clase usuario esta incompleta pues, nuestros usuarios no tienen nombre, apellido, ni se sabe nada de ellos, asi que retomamos nuestra clase y como mencionamos anteriormente, con frecuencia aunque no necesariamente es una regla, las propiedades de nuestras clases, representan campos en nuestra base de datos, agreguemos primero los campos a nuestra tabla de usuarios, y acto seguido las propiedades a nuestra clase...
tbl_usuario
--------------------
usuario_id | autoincremental, llave primaria
usuario_nombre | texto/varchar(50)
usuario_apellido | texto/varchar(50)
usuario_uname | texto/varchar(50)
usuario_pwd | texto/varchar(50)
usuario_activo | bit/boolean
usuario_fecha_edicion | datetime/fecha
En negritas se encuentran los nuevos campos y como comentamos, cada uno de estos campos representa una propiedad nueva en nuestra clase usuario, y como ya mencionamos, cada propiedad para efectos de nuestro ejercicio tendra 2 miembros, uno publico y otro privado y el publico, tendra dos metodos, uno que asigna valor, el otro que lo devuelve, al final de teclear todo esto, si no puedo tener exito como desarrollador, por lo menos se que de capturista si encuentro trabajo
:
Nota las convenciones que estamos usando, un miembro privado lo identificaremos pues comienza con "m_" (miembro), en tanto que el publico es el mismo nombre del privado sin el "m_", y en el metodo que hacemos la asignacion, recibimos un argumento p_data que es el dato publico, ahora si, a trabajar:
Código:
private m_nombre
private m_apellido
private m_activo
private m_fecha_edicion
public property get nombre()
nombre = m_nombre
end property
public property let nombre(p_data)
m_nombre = p_data
end property
public property get apellido()
apellido = m_apellido
end property
public property let apellido(p_data)
m_apellido = p_data
end property
public property get activo()
activo = m_activo
end property
public property let activo(p_data)
m_activo = p_data
end property
public property get fecha_edicion()
fecha_edicion = m_fecha_edicion
end property
public property let fecha_edicion(p_data)
m_fecha_edicion = p_data
end property
El problema de agregar propiedades, es que no nos escapamos de tener que agregarlas en cada metodo que las llame explicitamente:
Código:
Private sub Class_Initialize
m_id = -1
m_uname = ""
m_pwd = ""
m_nombre = ""
m_apellido = ""
m_activo = false
m_fecha_edicion = Cdate("1/1/1800")
End sub
Ok, hasta aqui vamos bien, hemos terminado de agregar las propiedades que en las partes que deben ser agregadas, ahora, si recuerdas nuestro formulario, despues de ingresar exitosamente, se establece una variable de sesion y se le asigna el valor del id del usuario, esta variable de sesion combinada con un metodo ObtenerDatos() puede ser de muchisima utilidad a lo largo de nuestra aplicacion:
Código:
Public function ObtenerDatos()
Dim ObjConn
Dim rs
Dim cmd
Dim param
Dim accionEsExitosa
Dim qry
Set ObjConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Set cmd = Server.CreateObject("ADODB.Command")
accionEsExitosa = false
qry = "SELECT a.* FROM tbl_usuario a WHERE a.usuario_id = ?"
Set param = cmd.CreateParameter("id", adInteger, adParamInput, 4, m_id)
cmd.Parameters.Append(param)
ObjConn.Open strConnect
cmd.ActiveConnection = ObjConn
cmd.CommandType = adCmdText
cmd.CommandText = qry
rs.Open cmd
if not rs.EOF then
m_id = rs("usuario_id")
m_nombre = rs("usuario_nombre")
m_apellido = rs("usuario_apellido")
m_uname = rs("usuario_uname")
m_pwd = rs("usuario_pwd")
m_activo = rs("usuario_activo")
m_fecha_edicion = rs("usuario_fecha_edicion")
accionEsExitosa = true
rs.Close()
else
accionEsExitosa = false
end if
ObjConn.Close()
Set rs = Nothing
Set ObjConn = Nothing
Set param = Nothing
Set cmd = Nothing
ObtenerDatos = accionEsExitosa
end function
Y su implementacion, suponiendo que ya hemos autentificado a nuestro usuario:
Código:
Set ObjUsuario = new usuario
ObjUsuario.id = Session("usuarioID")
if ObjUsuario.ObtenerDatos() then
Response.Write("Nombre: " & ObjUsuario.nombre & " " & ObjUsuario.apellido)
'todos los demas datos que querramos imprimir
else
Response.Write("No se encontro el usuario")
end if
Set ObjUsuario = Nothing
Mas adelante comenzaremos a darle sentido a todo esto, por el momento ya tenemos dos metodos en nuestra clase, y uno de ellos recupera todos los datos del usuario.
* Nota: Ya se que alguno de ustedes va a aparecer para gritarme "estas usando un select * en la consulta que devuelve las propiedades del usuario", se que el hacer consultas de este tipo tiene cierto "overhead", pero tampoco es un pecado mortal para este tipo de consultas que devuelven 5 o 6 campos, hay veces que es conveniente, y este es uno de los casos pues si llegamos a editar la tabla agregar/quitar campos, no tendremos tambien que modificar el query, es un pequenio pecado, pero creo que rezando dos oraciones, seremos exhonerados
Ahora si, saludos