lunes, 8 de junio de 2015

Revisar en un trigger si un campo con valor predeterminado CURRENT_TIMESTAMP tiene valor

Problema:
Se intenta revisar el valor que trae un registro que se acaba de guardar, no se le asigna un valor a un campo Fecha en la inserción ya que tiene configurada en la tabla como valor predeterminado un CURRENT_TIMESTAMP, lo que se requiere es que al momento de insertarlo se verifique que:
1) Es un registro nuevo (no se le puso fecha y se toma el CURRENT_TIMESTAMP)
2) En caso de que tenga asignado una fecha diferente a la actual no tomarlo en cuenta para un segundo proceso.
3) Se usará un trigger BEFORE INSERT

Solución.

if (cast(New.Fecha as date) = curdate()) or New.Fecha is null or NEW.Fecha = '0000-00-00 00:00:00'  then
 //Proceso en caso de ser nuevo o fecha actual
end if

El error que tenía antes de encontrar ésto era que suponía que si no se declara un valor en el campo Fecha entraba al trigger con valor NULL, lo cual es incorrecto ya que trae un valor de '0000-00-00 00:00:00' y éste no lo había considerado en la sentencia de evaluación.

sábado, 24 de agosto de 2013

Ejecutando programas externos desde .Net

Dada la necesidad de ejecutar un programa hecho en Java desde consola usando .Net con Visual Basic me puse un poco a investigar dada mi falta de experiencia en eso. Después de no mucho tiempo (2 minutos) encontré la solución resolviendo el problema de "ocultar" la ventana MS-DOS que aparece al ejecutar el programa:

Dim proceso As New System.Diagnostics.ProcessStartInfo

'Colocamos la ruta del programa a ejecutar, o comando

proceso.FileName = "java"

'Agregamos los parámetros de ejecución

Dim argumentos As String = "-jar ejecuta.jar"

proceso.Arguments = Argumentos

'Ponemos las condiciones para que se oculte la ventana al invocar el proceso

proceso.WindowStyle = ProcessWindowStyle.Hidden

proceso.CreateNoWindow = True

'Iniciamos el proceso en un nuevo hilo

Process.Start(proceso)



Ojalá les sirva para sus proyectos

sábado, 20 de julio de 2013

¿Qué intentaba arreglar cada lenguaje de programación?

Tomado de mundogeek.net

En su artículo What Languages Fix, Paul Graham, autor de Hackers & Painters y fundador de Y Combinator examinaba hace unos años algunos de los lenguajes de programación más conocidos desde una óptica interesante: los problemas que sus creadores intentaban solucionar al crearlos.

Hoy me he vuelto a encontrar con este texto y he dedicado unos minutos a traducirlo y a crear una representación gráfica en forma de línea de tiempo que podéis ver a continuación.


martes, 16 de julio de 2013

Modelo de cajas en CSS

Traducción de boxmodel:
Todos los elementos HTML son considerados como cajas. En CSS, el término "modelo de caja" o "box model" es usando al hablar del diseño y bosquejo.
El model de caja CSS es esencialmente una caja que se muestra alrededor de elementos HTML, el cual consiste de: márgenes, bordes, relleno y el contenido,
El modelo de caja nos permite colocar un borde alrededor de los elementos y espacio en relación a otros elementos.
El modelo se puede ver como la siguiente imagen:


Donde:
Margen (Margin): Es el espacio alrededor del borde. El margen no tiene color de fondo, es completamente trasnparente.
Borde (Border): Es el espacio alrededor del relleno y del contenido. El borde es afectado por el fondo de la caja.
Relleno(Padding): Es el espacio alrededor del contenido. El relleno es afectado por el color de fondo de la caja.
Contenido(Content): Es el contenido de la caja, donde se muestran las imágenes y el texto.

lunes, 15 de julio de 2013

Menú circular

Buscando ideas para crear un menú para la página www.llacuadetetique.com me topé con ésta bonita idea, la cual es crear un menú circular:


Donde el código para ponerlo en nuestra web la podemos encontrar en: codigo


miércoles, 10 de julio de 2013

Iglesia

Borrado de triggers de una base de datos mysql

En ocasiones cuando creamos triggers para llevar a cabo tareas inmediatas desde la base de datos y creamos triggers, sucede que después de un tiempo (1 semana) se nos olvida el nombre de los triggers creados. 

Éste problema conlleva a que si necesitamos subirlos de nuevo o simplemente borrarlos no podemos hacerlo hasta recordar el nombre (si es que nos acordamos). Una forma rápida de ver que triggers tenemos y de obtener la consulta para borrarlos es la siguiente:



select concat('drop trigger ', trigger_name, ';') from information_schema.triggers where trigger_schema = 'your_database' 


donde your_database es sustituido por el nombre de la base de datos donde se encuentran los triggers. Obtenido de http://stackoverflow.com

Como resultado nos dara los sqls necesarios para borrar los triggers que tenemos o en su caso para ver sus nombres.

Podemos ejecutar éste sql desde consola de Mysql o desde el PhpMyAdmin.