Este fin de semana arrancó con uno de esos retos que llaman la atención, aquí el problema:
Usar un lector biométrico para huella digital, identificar a una persona por su huella, y en caso de tener una coincidencia positiva, obtener determinada información de esa persona, y colocarla en un apartado en particular de una celda de una hoja de cálculo de Excel… todo eso, en el mismo Excel, es decir, no se puede tener un sistema externo porque el libro de trabajo ya contiene determinadas fórmulas que llenan secciones de la hoja de cálculo, donde se esperan los datos de la persona.
Para aquellos lectores que ya tienen resuelto esto, agradezco sus comentarios y guías al respecto. Como sea, esta es la crónica de cómo pretendo abordar el tema, porque lo estoy ejecutando al momento de escribir el artículo.
11 de Noviembre, 2017 – 11:50pm Divide y vencerás
Esta es la técnica por excelencia del desarrollo de software: partir un problema complejo en pequeños problemas e irlos resolviendo de a poco. Siguiendo con esa estrategia, el primer problema es encontrar un lector biométrico que cumpla con estos requisitos: huella digital, y un SDK que me permita conectarlo con .Net (de momento es la base teórica con la que parto).
12 Noviembre, 2017 – 12:20am Buscando el biométrico
Después de un par de consultas y resultados ambiguos en Google, decidí buscar opciones de equipos biométricos en Amazon. Esto lo describo sin ánimos de hacer comerciales, es netamente un recuento de lo que hice, vaya, el recuento de la crónica. De esa búsqueda, salieron las siguientes opciones:



El siguiente filtro fue ver cuáles de estas opciones exponían claramente un SDK con compatibilidad para .Net, y de los tres que elegí, el más claro fue el de Nitgen, pero, ya viendo el detalle fino en su sitio web, de Nitgen y tratando de encontrar más detalles del SDK, terminé en la siguiente URL:
SecuGen Hamster Plus (HSDU03P)

Este equipo me agradó bastante, por encima de los tres originales, comenzando desde la página en que se describe. Lo digo sin denostar, pero las otras, de verdad, no eran nada claras y se nota que no han trabajado mucho en el producto.
Hasta aquí dejaré esta parte, porque el siguiente paso de este punto, es mostrarle el lector al interesado y esperar a que, determine si lo adquiere o no; me parece que es una buena opción, el precio a la fecha de la edición de este artículo es bastante competitivo, siendo de $73.50 USD. Ya escribiré más tarde hoy, o en los días venideros, si este es el equipo que resulta ganador.
12 Noviembre, 2017 – 12:46am Programación en Excel
Mi historia en la computación data desde 1992, aprendiendo de memoria comandos de consola que no entendía qué hacian en realidad (como copy y xcopy), y algo que recuerdo muy bien era cómo todos decían que Lotus 123 era lo máximo. Cuando llegó la ocasión de verlo, intentar usarlo y no entender NADA (contaba yo con 10 años de edad para entonces), sólo me pareció el peor y más aburrido de los programas de entonces. Años después, dejé el entorno de consola y ví Windows 3.1 por primera vez… ¡Qué diferencia!
Creo que la aproximación de muchos a Windows 3.1 fue más o menos así (mi caso es igual): Bloc de notas, Paintbrush, calculadora, panel de control, MS Word y MS Excel… Power point y Access tardarían un poco más en entrar en escena.
De lo poco que ví de Lotus 123, al entrar a Excel y hacer prácticamente lo mismo, pero ya con un ratón y sin imaginarme que estaba ocurriendo porque lo podía ver, sin entender aun que en el mundo del software existen también los creadores y los clonadores, yo pensaba que Excel era la versión gráfica de Lotus.
En mi muy personal punto de vista, MS Office es una de las mejores suites de ofimática, sino es que la mejor. Y Excel, sin dudas, es un ejemplo indiscutible del éxito de la suite.
Hoy día creo que Microsoft hizo un movimiento magistral permitiendo extender la funcionalidad de sus productos de ofimática (MS Office) de acuerdo a las necesidades específicas del usuario, y si hay un lugar donde esto es particularmente útil, es obviamente en Excel.
El segundo requerimiento por resolver, con base en esta premisa, y regresando a la crónica que nos ocupa, dado que lo he usado no más allá de «muy poco», empecé a buscar dónde y cómo se extiende la funcionalidad de MS Excel 2010 (la versión que tengo y uso) con esta facilidad.
Noviembre 12, 2017 – 01:08am Sin miedo desde Excel
He leído un par de artículos y visto un par de videos. Ya hice el típico Hola Mundo que quienes me conocen saben que cambio por un inigualable y valioso «Sin miedo», asignar valores a una celda y relacionar al evento de un clic de botón que ejecute una de las dos macros que he hecho. Hasta el momento todo bien.
El recuento de los hechos:
1. Abrir Excel
2. Ir a la pestaña Programador
3. Clic en Visual Basic

4. En la ventana nueva, en el explorador de proyectos, clic derecho sobre el nombre del libro de trabajo, opción Insertar y elegir Módulo.
5. En la ventana de código declarar la rutina de toda la vida Sub Signatura…
Sub sinmiedo()
MsgBox ("sin miedo desde el excel ohhh jo jo jo")
End Sub
6. Guardar los cambios

7. Regresar a la hoja de excel, y teclear al mismo tiempo ALT + F8. Esto abrirá la ventana de ejecución de Macros. Elegimos la recién creada y fffssshhh, listo, mensaje en MS Excel sin miedo:

Hasta este punto todo bien. Ya tenemos interacción con MS Excel. Sigue poder invocar la función desde un botón, ejecutar algo más elaborado y regresar resultados a la hoja de cálculo, pero eso ya será mañana, porque como pueden ver, es la 1 de la madrugada y ya tengo sueño :-D.
Continuará sin miedo…
Noviembre 12, 2017 – 5:58pm Adelantando eventos
Si estás leyendo esto fuera del contexto de la fecha, el 12 de Noviembre es/fue domingo. La decisión de comprar o no el lector de huella digital está pendiente al menos hasta el lunes, y tampoco tengo a la mano el libro de trabajo al que se le añadirá la funcionalidad solicitada, o quizá debería decir, a la que pretendo agregar la funcionalidad solicitada.
Parte de la información que se desea obtener, es el nombre y el titulo de la persona que está siendo identificado por el biométrico. Para tales efectos, decidí hacer un ejemplo de lo que creo que será el trabajo por hacer. De tal suerte que en una hoja de calculo aparte, hice una lista de nombres y títulos genéricos, y una columna que hará de llave primaria y con la que se realizará la búsqueda del registro en turno. La hoja se aprecia como sigue:

En la hoja principal simularemos el evento de invocar al biométrico, obtener la huella digital y traer el nombre y el título de la persona identificada.
En la hoja principal donde están las celdas para escribir el nombre y el título de la persona, generé un botón. A un costado de este botón y para fines de seguimiento, declaré una celda en la que se estará escribiendo el ID de la persona que se identificó con el biométrico (esta parte es la simulación). Al presionar el botón, estaríamos invocando la lectura del biométrico, que a su vez dejará el ID obtenido en la celda comentada, y esta será usada como referencia para obtener el nombre y el título buscados.

El flujo simulado quedó entonces de la siguiente forma:
Al hacer clic en el botón leer huella, se invoca el biométrico (este paso nos lo saltamos hasta tener el dispositivo) y lo simulamos escribiendo previamente un número en la celda contigua a la etiqueta del identificador (O25).

El botón leerá el valor de la celda O25 y lo pasará como parámetro a la función que obtiene el nombre y el título asociados al identificador. En caso de tener una coincidencia, asigna en las celdas H27 y H28 el nombre y el título encontrados, respectivamente. Como corolario cultural y salido más de experimento que de lectura, si se da un formato previo a las celdas (tipo de letra, estilo, etc.), éste es respetado.

Esta es la declaración básica y primitiva de las funciones que realizan las búsquedas y asignaciones:
Sub leerDatosPorID(ByVal id As Integer) Dim nombre As String Dim titulo As String Dim celda As String 'MsgBox (id) ' el rango maximo es de 11 (el 1 es el titulo) If (id > 1 And id <= 11) Then celda = "B" & id nombre = ThisWorkbook.Sheets(2).Range(celda).Value ThisWorkbook.Sheets(1).Range("H27").Value = nombre celda = "C" & id titulo = ThisWorkbook.Sheets(2).Range(celda).Value ThisWorkbook.Sheets(1).Range("H28").Value = titulo Else ThisWorkbook.Sheets(1).Range("H27").Value = "Persona no identificada" ThisWorkbook.Sheets(1).Range("H28").Value = "Titulo no identificado" End If End Sub Sub obtenerIDHuella() Dim id As Integer id = ThisWorkbook.Sheets(1).Range("P24").Value leerDatosPorID (id) End Sub
Ya con el libro de trabajo real en mano, vemos cómo le hacemos… mañana.
Enero 30, 2018. Proyecto cancelado.
Ha pasado más de un mes desde el primer análisis que hice. Mi interesado no me buscaba, pensé que era porque había tomado vacaciones decembrinas… De hecho sí lo hizo, solo que al volver ya no me contactó porque ya no trabaja en donde se necesitaba este software, y con su salida, se terminó también el interés en el proyecto.
Ni hablar… Damos por cerrada la crónica.
Deja un comentario