• No results found

Chapter 3. Experimental Techniques

3.1 Electrochemical Tests

2.3.1.1 Conexión de Base de Datos

Se realiza con la siguiente cadena de conexión a Microsoft SQL Server 2005, especificando nombre de usuario, contraseña y el nombre de la base de datos a la cual accedemos.

public String Cadena()

{

return "Data Source=.;Initial Catalog=CONTROLASISTENCIA;User ID=sa;Password=sa";

}

2.3.1.2 Capturar Huella

Función JavaScript predeterminada en las librerías del Detector de Huella, por lo que simplemente se hace un llamado a la función, indicando desde un evento de un Text Box que se ejecute la capturan de la huella.

function capturaHuella1() {

try

{

var myobject= new ActiveXObject("D2web.d2finger.1"); myobject.identificacion='11111111111111';

myobject.posicion='6'; myobject.veces=1; myobject.flag=0; myobject.captura();

document.getElementById('imagen2').style.visibility="visible"; document.form1.txtCaptura2.value=myobject.huellaCapturada; compararHuella(); } catch(e) { alert(e.message); } return(true); }

74

2.3.1.3 Comparar Huellas

Función JavaScript predeterminada que por seguridad del lector no podemos ver cuál es el procedimiento que utiliza para comparar si las huellas son iguales, y que físicamente la cadena de caracteres que captura el lector son totalmente diferentes, es por eso que se utiliza dicha función.

function compararHuella() {

try

{

var myobject= new ActiveXObject("D2web.d2finger.1"); myobject.huella=document.form1.txtCaptura1.value; myobject.huellaComparar=document.form1.txtCaptura2.value; myobject.compararHuella(); var resultado=myobject.retorno; if(resultado == 1)

alert("HUELLA SI SON IGUALES"); else

{

document.form1.txtCaptura1.value='';

document.form1.txtCaptura2.value=''; document.getElementById('imagen1').style.visibility="hidd en";

document.getElementById('imagen2').style.visibility="hidd en";

alert("HUELLA NO SON LAS MISMAS"); } } catch(e) { alert(e.message); return false; } return(true); }

2.3.1.4 Auto Capturar Huella

Función establecida por el lector para poder tener las capturas de huellas después de un cierto tiempo.

function autoOn() {

try

{

var myobject= new ActiveXObject("D2web.d2finger.1"); alert("COLOQUE EL DEDO EN EL LECTOR");

myobject.AutoOn();

75 } catch(e) { alert(e.message); return false; } return(true); }

2.3.1.5 Comparar Huellas de Base de Datos

Esta función permite hacer en consulta sql a la tabla del empleados, buscando si esa cadena de caracteres que se identificó ya está asignada a la base de datos, para posteriormente mostrar datos caso contrario mostrar mensaje de error.

public void BuscarHuellaBDD(string huella) { try { if (huella != "") { leerDatos = llamarHuellas.todoslosHuellas(); if (leerDatos.HasRows) { while (leerDatos.Read()) {

codHuella = int.Parse(leerDatos[0].ToString());

cedulaEmpleado = leerDatos[1].ToString(); huellaBDD = leerDatos[2].ToString();

if (comparar_huella(huella, huellaBDD) == true) {

fechaRegistro = DateTime.Today;//TOCA UTILIZAR SOLO LA FECHA PARA LAS COMPRACIONES EN SQL CASO CONTRARIO DA ERROR

horaEntarda = DateTime.Now; verIngreso = llamarRegistroAsistencia.comprobarRAsistencia( fechaRegistro, cedulaEmpleado); if (verIngreso == false) { numeroRegistro = llamarRegistroAsistencia.numRegistroAsistencia

();//Numero de Registro automatico

numeroVeces = 1;//Numero de Veces q el

empleado se ha registrado con la Huella automatico

llamarRegistroAsistencia.nuevaRAsistencia(nume roRegistro, numeroVeces, cedulaEmpleado, fechaRegistro, horaEntarda,

76

DateTime.Parse("0:00:00"),

DateTime.Parse("0:00:00"));

debeHoraEntrada = calcularHoras(1,

horaEntarda, DateTime.Parse("0:00:00"));

//PARA INGRESAR LOS DATOS DE LOS ATRASOS

int cod = llamarAtrasos.CodAtrasos();

verificarAtrasos = llamarAtrasos.nuevaAtraso(cod, cedulaEmpleado, fechaRegistro, DateTime.Parse(debeHoraEntrada), 0, DateTime.Parse("0:00:00"), 0, DateTime.Parse("0:00:00"), 0, DateTime.Parse("0:00:00"), "", ""); } else { retNumRegis = llamarRegistroAsistencia.numR; retNumVeces = llamarRegistroAsistencia.numV; retCedula = llamarRegistroAsistencia.cedEmp; retFechaDia = llamarRegistroAsistencia.fechaD; retHoraE = llamarRegistroAsistencia.horaE; retHoraSaleA =llamarRegistroAsistencia.horaSA; retHoraEntraA=llamarRegistroAsistencia.horaEA; retHoraS =llamarRegistroAsistencia.horaS; //DATOS DE ATRASOS llamarAtrasos.comprobarAtraso(fechaRegistro, cedulaEmpleado);

codAtras=Convert.ToString(llamarAtrasos.codA);

cedEmp = llamarAtrasos.cedulaEmpl; fechaAtra = llamarAtrasos.fechAtr; horaE = llamarAtrasos.horaEntrAtr;

jusHoraE=Convert.ToString(llamarAtrasos.horaEn

trJus);

horaSA = llamarAtrasos.horaAlmAtr;

jusHoraSA=Convert.ToString(llamarAtrasos.horaA

lmJus);

horaS = llamarAtrasos.horaSalAtr;

jusHoraS=Convert.ToString(llamarAtrasos.horaSa

lJus);

totaHora = llamarAtrasos.totaAtr; jusPor = llamarAtrasos.nomJusPor; observacio = llamarAtrasos.obserAtr;

retNumVeces++;//PARA REGISTRAR DURANTE LAS

CUATRO HORARIOS QUE TIENE EL DIA

if (retNumVeces == 2)

retHoraSaleA = DateTime.Now;//CALCULAR LA HORA DE SALIDA A EL ALMUERZO

else if (retNumVeces == 3)

{

retHoraEntraA = DateTime.Now;//CALCUAL LA HORA DE ENTRADA DEL ALMUERZO

debeHoraEntrada = calcularHoras(2, retHoraSaleA, retHoraEntraA);

verificarAtrasos =

llamarAtrasos.modificarAtrasos(int.Parse (codAtras), cedEmp,

DateTime.Parse(fechaAtra),

DateTime.Parse(horaE), 0,

77 DateTime.Parse("0:00:00"), 0, DateTime.Parse("0:00:00"), "", ""); } else { retHoraS = DateTime.Now;//CALCULA LA HORA DE SALIDA DEL TRABAJO

debeHoraEntrada = calcularHoras(3, retHoraS, retHoraEntraA);

TimeSpan subtot =

TimeSpan.Parse(DateTime.Parse(horaE).ToS

hortTimeString()) +

TimeSpan.Parse(DateTime.Parse(horaSA).To

ShortTimeString()) +

TimeSpan.Parse(DateTime.Parse(debeHoraEn

trada).ToShortTimeString());

string tot =

DateTime.Parse(Convert.ToString(subtot))

.ToShortTimeString(); verificarAtrasos =

llamarAtrasos.modificarAtrasos(int.Parse (codAtras), cedEmp, DateTime.Parse(fechaAtra), DateTime.Parse(horaE), 0, DateTime.Parse(horaSA), 0, DateTime.Parse(debeHoraEntrada), 0, DateTime.Parse(tot), "", ""); } if (retNumVeces <= 5) llamarRegistroAsistencia.modificarRAsist encia(retNumRegis, retNumVeces,

retCedula, retFechaDia, retHoraE,

retHoraSaleA, retHoraEntraA, retHoraS);

else

lblMensaje.Text = "NO SE HA REGISTRDO NINGUNA ACCION <br/> HA ECCEDIDO EL NUMERO DE REGITROS"; } verificar = true; } //else // numRegistros++; } leerDatos.Close(); leerDatos = llamarRegistroAsistencia.todosLosRegistroAsistencia(Con vert.ToString(fechaRegistro), Convert.ToString(fechaRegistro)); ListBox1.Items.Clear(); while (leerDatos.Read()) { ListBox1.Items.Add(leerDatos[0].ToString() + " " + leerDatos[1].ToString() + " " +

78 leerDatos[2].ToString() + " " + leerDatos[3].ToString() + " " + leerDatos[4].ToString() + " " + leerDatos[5].ToString()); } leerDatos.Close(); if (verificar != true)

lblMensaje.Text = "HUELLA NO ENCONTRADA";

//ScriptManager.RegisterStartupScript(this, GetType(), "Información", "alert('HUELLA NO ENCONTRADA');", true);

}

else lblMensaje.Text = "NO EXISTE NINGUNA REGISTRE";

//ScriptManager.RegisterStartupScript(this, GetType(), "Información", "alert('NO EXISTE NINGUNA REGISTRE');", true);

}else lblMensaje.Text = "NO EXISTE NINGUNA HUELLAS EL LA CAJA DE TEXTO";

//ScriptManager.RegisterStartupScript(this, GetType(),

"Información", "alert('NO EXISTE NINGUNA HUELLAS EL LA CAJA DE TEXTO');", true);

}

catch (Exception e) {

ScriptManager.RegisterStartupScript(this, GetType(),

"Información", "alert('" + e.Message.ToString() + "');", true); }

}

2.3.1.6 Función Guardar

Con la función insert del lenguaje sql y especificando los campos se guarda la información del nuevo empleado, esta función se la emplea en todos los formulario con la misma estructura, lo único que cambia es la tabla a donde se desea insertar los datos y los parámetros que recibe cada función en sus distintas clases.

public Boolean nuevoEmpleado(int numEmpleados, string cedulaEmpleado,

string apellidoEmpleado, string nombreEmpleado, int codigoProfesion, int

codigoCiudad, string estCivilEmpleado, string sexoEmpleado, string

telefonoEmpleado, string movil1Empleado, DateTime fechaNaceEmpleado, int

cargaFEmpleado, string nacionalidadEmpleado, string estadoEmpleado, string

emailEmpleado, int codigoParametros, string tipo ,string direccionEmpleado)

{

79

{

llamarConexion.AbrirCerrarBDD();

String texto = "insert into EMPLEADOS values('" + numEmpleados

+ "','" + cedulaEmpleado + "','" + apellidoEmpleado + "','" + nombreEmpleado + "','" + codigoProfesion + "','" + codigoCiudad + "','" + estCivilEmpleado + "','" + sexoEmpleado + "','" + telefonoEmpleado + "','" + movil1Empleado + "','" + fechaNaceEmpleado.ToShortDateString() + "','" + cargaFEmpleado + "','" + nacionalidadEmpleado + "','" + estadoEmpleado + "','"

+ emailEmpleado + "','" + codigoParametros + "','" + tipo +

"','" + direccionEmpleado + "')";

sqlComand = new SqlCommand(texto, llamarConexion.Conexion);

sqlComand.ExecuteNonQuery(); return true; } else return false; } 2.3.1.7 Función Modificar

La estructura de esta función es utilizada en varios formularios del proyecto, en este caso hemos tomado un ejemplo de la clase empleados, lo que cambiaría en los demás clases son los parámetros que enviamos y la tabla que será la afectada, pero el funcionamiento es el mismo para todas las clases.

public Boolean modificarEmpleado(int numEmpleados, string cedulaEmpleado,

string apellidoEmpleado, string nombreEmpleado, int codigoProfesion, int

codigoCiudad, string estCivilEmpleado, string sexoEmpleado, string

telefonoEmpleado, string movil1Empleado, DateTime fechaNaceEmpleado, int

cargaFEmpleado, string nacionalidadEmpleado, string estadoEmpleado, string

emailEmpleado, int codigoParametros, string tipo ,string direccionEmpleado)

{

if (comprobarEmpleado(cedulaEmpleado) == true)

{

80

String texto = "update EMPLEADOS set apellidoEmpleado='" + apellidoEmpleado + "' ,nombresEmpleado='" + nombreEmpleado +

"',codigoProfesion='" + codigoProfesion + "',numeroCiudades='"

+ codigoCiudad + "',estadoCivil='" + estCivilEmpleado +

"',sexoEmpleado='" + sexoEmpleado + "',telefonoEmpleado='" + telefonoEmpleado + "',movil1Empleado='" + movil1Empleado +

"',fechaNaceEmpleado='" + fechaNaceEmpleado +

"',cargaFamiliarEmpleado='" + cargaFEmpleado +

"',nacionalEmpleado='" + nacionalidadEmpleado + "',

estadoEmpleado='" + estadoEmpleado + "',emailEmpleado='" + emailEmpleado + "', codParametros='" + codigoParametros +

"',tipo='" + tipo + "',direccionEmpleado='" + direccionEmpleado + "' Where cedulaEmpleado='" + cedulaEmpleado + "' ";

sqlComand = new SqlCommand(texto, llamarConexion.Conexion);

sqlComand.ExecuteNonQuery(); return true; } else return false; } 2.3.1.8 Función Eliminar

Esta función se la emplea en algunos formularios, no es recomendable eliminar datos por que tendríamos que eliminar en cascada, esto significa que perderemos la información.

public Boolean eliminarEmpleado(int codigoEmpleado, String cedulaEmpleado) {

if (comprobarEmpleado(cedulaEmpleado) != false) {

llamarConexion.AbrirCerrarBDD();

String texto = "DELETE EMPLEADOS WHERE cedulaEmpleado ='" + cedulaEmpleado + "'";

sqlComand = new SqlCommand(texto, llamarConexion.Conexion);

sqlComand.ExecuteNonQuery(); return true; } else return false; }

81

2.3.1.9 Función Comprobar Datos

Esta función es importante en todo el proyecto, nos permite comparar si el nombre que se va a ingresar no sea igual al existe en la base de datos, esta comparación la podemos ver en las funciones que anteriormente están, y la información no será duplicada.

//AQUI TODOS LOS CAMPOS DEL EMPLEADO

public Boolean comprobarEmpleado(String datos) { leerDatos = DatosEmpleado(datos); while (leerDatos.Read()) { numEmp = leerDatos.GetSqlInt32(0).ToString(); cedEmp = leerDatos.GetSqlString(1).ToString(); apellEmp = leerDatos.GetSqlString(2).ToString(); nomEmp = leerDatos.GetSqlString(3).ToString(); nomProfEmp = leerDatos.GetSqlString(4).ToString(); nomCiudEmp = leerDatos.GetSqlString(5).ToString(); estCivil = leerDatos.GetSqlString(6).ToString(); sexoEmp = leerDatos.GetSqlString(7).ToString(); telfEmp = leerDatos.GetSqlString(8).ToString(); movil1Emp = leerDatos.GetSqlString(9).ToString(); fechaNEmp = leerDatos.GetSqlDateTime(10).ToString(); cargaFEmp = leerDatos.GetSqlInt32(11).ToString(); nacionaEmp = leerDatos.GetSqlString(12).ToString(); estadoEmp = leerDatos.GetSqlString(13).ToString(); emailEmp = leerDatos.GetSqlString(14).ToString(); nomParam = leerDatos.GetSqlString(15).ToString(); ti = leerDatos.GetSqlString(16).ToString(); direccionEmp = leerDatos.GetSqlString(17).ToString(); if (cedEmp == datos) return true;

else if (apellEmp + " " + nomEmp == datos) return true;

}

return false; }

2.3.1.10 Función Consultar

Esta función es de vital, importancia para poder realizar consultas enviado parámetros a consultar.

//PARA FILTRAR LOS DATOS EN EL COMBO DE LA EMPLEADOS

public SqlDataReader DatosEmpleado(String nombreEmpleado) {

llamarConexion.AbrirCerrarBDD();

sqlComand = new SqlCommand("SELECT E.numeroEmpleado,E.cedulaEmpleado, E.apellidoEmpleado, E.nombresEmpleado, P.nombreProfesion,

82

C.nombreCiudades, E.estadoCivil, E.sexoEmpleado, E.telefonoEmpleado, E.movil1Empleado, E.fechaNaceEmpleado,E.cargaFamiliarEmpleado,

E.nacionalEmpleado, E.estadoEmpleado, E.emailEmpleado,

PA.nombreParametros, E.tipo, E.direccionEmpleado FROM EMPLEADOS E, PROFESION P, CIUDADES C , PARAMETROSEMPLEADOS PA WHERE

E.codigoProfesion=P.codigoProfesion AND

E.numeroCiudades=C.numeroCiudad AND E.codParametros=PA.codParametros AND ((E.apellidoEmpleado+' '+ E.nombresEmpleado like '" +

nombreEmpleado + "%' ) OR (E.cedulaEmpleado like '" + nombreEmpleado + "%')) order by E.apellidoEmpleado +' '+ E.nombresEmpleado asc ", llamarConexion.Conexion);

leerDatos = sqlComand.ExecuteReader(); return leerDatos;

83