15 octubre 2012

People Power

Game-People-PowerSiendo hoy el Blog Action Day me dispuse a postear algo en mi blog (como hago cada año) relacionado al tema elegido.  Este año el tema es “The Power of We” con el fin de mostrar el poder que tenemos los ciudadanos, desde ayudar a personas cercanas con tareas cotidianas hasta participar en movimientos que buscan cambios que sean benéficos para la sociedad.

Estos últimos años han sido muy interesantes en lo que respecta a la participación ciudadana en pro de la sociedad.  Desde mayo del 2011 hasta septiembre del 2012 han surgido una variedad de protestas en España que han usado las redes sociales para buscar una nueva democracia.  A principios de este año (el 25/Enero para ser precisos), usuarios de Twitter en Egipto usaron esta red social para organizarse y lograr un cambio en el gobierno, en New York usuarios de la misma red lanzaron el Occupy Wall Street (un movimiento en contra de que los ricos y compañías que evadan impuestos) y en México fuimos testigos del movimiento YoSoy132 quienes son un grupo de universitarios que buscaban la elección informada en las elecciones de presidente este verano pasado.  ¡Vaya que la gente está reaccionando y las redes sociales han dado un poder a las masas (por lo menos los que están conectados a internet) sin igual!

Ahora la pregunta sería, ¿cómo ayudar a las personas para que realizaran acciones pacíficas más efectivas?  Como muchos saben, estoy convencido que los videojuegos son herramientas poderosas para educar y enseñar cosas complejas, y es por eso que en esta ocasión quiero hablarles del juego People Power: the Game of Civil Resistance.

Pero, ¿de qué trata este juego?  Tomas el papel de un líder de un movimiento popular y debes de luchar, de forma pacífica, contra enemigos que controlan la policía, el ejército, los medios de comunicación y la burocracia.  Lo único que tienes a tu favor es tu creatividad.  Es una oportunidad de unirte a una red de jugadores que comparten ideas sobre formas pacíficas de resistencia civil.  Fue desarrollado en conjunto con la International Center on Nonviolent Conflict, o sea que hay personas detrás del juego que están muy bien informadas y metidas en la resistencia civil pacífica.

Yo lo voy a comprar en estos días porque quiero analizarlo más a fondo, pero es otra prueba de que los videojuegos no paran de sorprendernos con su poder de crear simulaciones para entrenar/enseñar/desarrollar habilidades/etc. en casi cualquier tema o materia.

Por lo tanto, ahora ¡a jugar!

Escrito para el Blog Action Day 2012 (15/Oct) #poweofwe #bad12

14 octubre 2012

Insertando datos en Access 2010 desde Visual Basic .net

En varios lugares de mi blog he explicado como mostrar datos de una tabla de Access en Visual Basic .net: puedes mostrar los datos en el ambiente de Visual mostrarlo en cajas de texto y buscar registros y mostrarlo en cajas de texto.  Una vez inserté un registro, pero no cambiaba de valor, solo insertaba el mismo registro siempre.  En esta ocasión hice un programa (que fue inspirado por el post del blog Relaciones Informáticas) que permite que usuarios llegue, ingresen su clave (o número de nómina o como le quieran llamar) y el programa registra su asistencia en una tabla hecha con Access 2010.

Aquí presento el diseño de la tabla, llamada Registro, que está en un archivo llamado Asistencia.accdb.  Si no sabes cómo crear una base de datos en Access o una tabla en vista diseño, fíjate en la primera parte de este post.  La tabla tiene estos registros y lo copié en la carpeta bin\Debug que está en la carpeta de la solución:

00_-_Tabla_Registro

En Visual Basic hice un nuevo proyecto que tiene una Label que dice “Escriba su clave”, una caja de texto llamado txtClave (que es donde van a teclear su número de empleado), dos labels donde mostrará la fecha y hora actual (llamadas lblFecha y lblHora respectivamente) y dos botones: una para registrar la asistencia (btnRegistra) y otra para salir (btnSalir).  También tiene un Timer (llamado Timer1) para actualizar la fecha y hora cada segundo (su propiedad Interval = 1000).  Así se ve la ventana en la vista diseño (están seleccionadas las dos etiquetas que tienen la fecha y hora: como están sin texto, si no las selecciono no se ven):

01_-_Form1_diseño

Ahora vamos con el código que lo hace funcionar.  Al principio de todo, aun antes del Public Class Form1, escribí lo siguiente:

02_-_Imports

Luego justo abajo del Public Class Form1 declaro el objeto que va a hacer la conexión con la base de datos y la que me va a permitir enviar comandos SQL a la tabla:

03_-_Dim_coc_y_com

En el Form_Load creo el objeto de conexión y arranco Timer1 para que muestre la fecha y hora en la ventana:

04_-_Form_Load

La variable con pone el ConnectionString de la conexión, es decir, le dice cómo se va a conectar a la base de datos y qué archivo de Access va a accesar (valga la redundancia).  Para archivos de Access 2010 siempre va a ser igual la primera parte (Provider=Microsoft.ACE.OLEDB.12.0;Data Source=) y después del Data Source= hay que indicar en dónde está el archivo que desea usar.  En este caso uso la propiedad Application.StartupPath que nos dice en qué carpeta se encuentra el archivo EXE de la aplicación (por eso copié la base de datos a la carpeta ) seguido de una diagonal invertida y el nombre del archivo de Access.

El siguiente código se encarga de insertar un nuevo registro en la tabla con la clave del usuario (que escribió en la caja de texto txtClave), la fecha y la hora actual.  Aquí pongo el código y abajo explico lo que sucede:

05_-_btnRegistra

Declaro dos variables: fecha y hora. En la fecha pongo la fecha actual (usando el método Date del objeto Now) y en hora creo una cadena con la hora actual.  Uso el bloque Try…Catch porque al trabajar con archivos en general y con bases de datos en particular, se puede tener muchos tipos de errores que causen que tu programa truene (alguien borró el archivo, alguien lo abrió en modo diseño, etc.).  Comienzo abriendo la conexión (conConexion.Open) y creo un nuevo objeto OleDbCommand.  A este objeto (llamado cmdCommand) comienzo por inicializar algunas propiedades para que pueda funcionar: la propiedad Connection que indica la conexión por medio de la cual se va a comunicar con la tabla, CommandText que contiene la instrucción SQL que va a ejecutar (si te fijas, armé una cadena con los datos de las cajas de texto y etiquetas), ExecuteNonQuery que ejecuta el comando (siempre y cuando no sea una consulta, o sea que no sea un SELECT) y Close que cierra el objeto.

Para finalizar, este es el código del Timer1_Tick que se ejecuta cada segundo para actualizar fecha y hora en las etiquetas de la ventana y el del botón de Salir (btnSalir) que se encarga de eliminar la conexión y termina la ejecución del programa:

06_-_Timer_y_btnSalir

Al ejecutarlo, se ve así:

07_-_Ejecución_1     08_-_Ejecución_2

Como verás, de forma muy similar también se pueden llevar a cabo instrucciones SQL como el DELETE y UPDATE.  Espero que les haya sido útil.

Related Posts Plugin for WordPress, Blogger...