13 noviembre 2013

Respaldo automático de una tabla de MySQL en windows

Existen diferentes ejemplos para respaldar una base de MySQL en Windows utilizando archivos .bat y el programador de tareas, este ejemplo usa los mismos principios, solo que solo se respalda una sola tabla de la base de datos.
 El código siguiente se guarda la tabla "bitacorafacturas" de una base de datos que se llama "sidca", dado que hay que utilizar mysqldump, debe especificarse la ruta donde se encuentra.
Yo Estoy usando XAMPP, en todo caso hay que poner la ruta donde se encuentra mysqldump.
Se debe tenerse cuidado y poner el código del script tal y como se muestra, los espacio (o la falta de ellos) son importantes.
root es el usuario por definición en MySQL
MiContraseña es la contraseña que usamos para acceder a la base de datos
sidca  es la base de datos
bitacorafacturas es la tabla que se va a respaldar, solo esta.

El respaldo se guardará en la ruta C:\BitacoraFacturas\
Si hoy es 13/11/2013 (13 de noviembre del 2013) y son las 2 de la tarde, entonces el archivo se llamará:
BitacoraFacturas_ 20131113_ 0200.sql

Que disfrute el script.




@echo off
::Variables para obtener fecha y hora
FOR /F "tokens=1,2,3 delims=/ " %%i IN ('date /T') do (set DIA= %%k%%j%%i)
FOR /F "tokens=1,2 delims=: " %%n IN ('time /T') do (set HORA= %%n%%o) 


::Ejecución del Dump para respaldo de la base de datos (Respalda una tabla específica de una base de 
::datos, este caso de la base de datos "sidca" se respalda la tabla "bitacorafacturas" )


C:\xampp\mysql\bin\mysqldump -u root -pMiContraseña sidca bitacorafacturas > "C:\BitacoraFacturas\BitacoraFacturas_%dia%_%hora%.sql"

21 marzo 2010

Maroma nueva a chango viejo

Siempre creí que el refrán "No se puede enseñar maroma nueva a chango viejo" sería falso para aquellos que siempre han buscado la actualización de conociminetos. Y esto es más verdad en el momento actual donde no basta estudiar una carrera universitaria para obtener un empleo, ahora hay que diversificarse, aprender cosas que tengan un potencial interés para los que contratan. Esto no siempre resulta fácil si hemos dejado nuestros intentos por aprender algo nuevo, mientras más tiempo estemos alejados del aprendizaje más difícil resulta aprender, por otro lado, siempre es posible que lo que queremos aprender no se pueda estudiar en el lugar que queremos o no existe todavía un curso para desarrollar una nueva habilidad. Por ejemplo, en esta última semana he estado estudiando Lazarus, que es una herramienta de desarrollo de programas o aplicaciones y que algunos dicen es un clon de Delphi. Pues bien, hace ya muchos años intenté aprender el uso de Delphi, no lo logré porque el mercado laboral me pedía aprender el entorno de programación de Microsoft (VB6, VBA VB.net). Pero el tiempo me ha mostrado que debo buscar nuevas opciones ya que si deseo desarrollar nuevas aplicaciones y no tengo dinero para comprar las licencias de los programas de desarrollo (Por ejemplo, el OFFICE 2007 PROFESIONAL COMPLETO cuesta $9,379.00 en Office Depot ), puedo acudir a las aplicaciones o preogramas de libre acceso y código abierto (como OpenOffice y Lazarus)
Esta semana al iniciar con lazarus, no dormí en dos noches porque no podía llamar a un formulario desde otro, eso es algo muy sinple pero resulta que la programación es algo diferente, por principio es Pascal, por otro lado el ambiente de desarrollo es muy parecido al de Delphi y debes conocer la estructura de las Unit y del proyecto en pascal. Algo simple, pero que puede confundir un poco al que solo ha desarrollado en ambientes creados por Microsoft.
Si alguien quiere caminar derechito no necesita piratear, necesita aprender a resolver los problemas de desarrollo de aplicaciones con otra opciones, es decir necesita aprender maromas nuevas.

18 mayo 2008

¿Informacióm confiable? La violencia en la televisión infantil (México)

El pasado 7 de mayo apareción en los medios de comunicación de nuestro país una noticia sobre la propuesta hecha por el diputado federal Vargas Landeros. Todos los medios de informnación mencionan al respecto un reporte Hecho por Beatriz Solis Leree (http://www.amedi.org.mx/spip.php?article293), en esta página se puede encontrar una carta enviada a la secretaria de gobernación haciendo mención a los resultados de la supuesta investigación.

Se ha hecho referencia al reporte de la Sra. Solís en diferentes momentos y medios como si este fuera la referencia obligada, no obstante parece ser aquellos que citan este trabajo han leído solo la superficie, y no han notado los graves errores que presenta el trabajo, los cuales enumero a continuación:

1. Se monitoreó solo la programación del canal 5 de Televisa (televisión abierta) de 6:00 a 18:00. ¿Por qué no hay datos de otras televisoras? ¿Está correlacionada el tipo de programación y el tiempo que ve un niño esta con la propensión a la violencia? En el reporte se menciona solo una opción. Tampoco podemos deducir cuanto tiempo ven los niños la televisión, si lo hacen solos o en compañía de un adulto. Por otro lado, no sabemos si los niños sin televisión, o que ven otro tipo de programación son menos o más violentos.

2. Se asume que la televisión es causa de la violencia infantil en escuelas, al respecto se hace referencia a un documento no académico (Revista Vértigo. 1 mayo 2007), aun cuando la opinión de una experta es valiosa, en un reporte de esta índole sería mejor contar con referencias más serias por ejemplo: “Violencia en la televisión mexicana: Un análisis del contenido de los treinta programas con mayor nivel de audiencia”, este artículo trata del mismo tema y es un estudio serio. El reporte no cuenta con referencias bibliográficas.

3. Se menciona que “el análisis se acompañó de entrevistas con niños al salir de sus escuelas”. ¿Por qué en los resultados no se hace ninguna mención a estas entrevistas? ¿Qué es lo que realmente están viendo los niños? ¿Se hizo algún estudio por nivel socioeconómico? ¿Es igual para niños que asisten a clase en la mañana qué en la tarde? ¿Se sabe qué ven los niños por edad?

4. En la gráfica con título “Presencia de violencia por horario” se menciona que entre las 12:00 y las 13:00 se encuentran los programas con el mayor número de eventos violentos, no obstante, si conocemos los horarios de clase de nuestros niños, sabremos que la mayor parte de los alumnos de jardín de niños salen a las 12:00 hs, y a menos de que vivan frente a la escuela es poco probable que vean el programa más violento completo. Es además un hecho que los niños de primaria y secundaria no lo verán. En todo caso, es posible que niños que asisten a clase en la tarde si lo vean, por extensión de ideas cabría esperar que estos niños sean más violentos. ¿Se hizo alguna distinción al respecto?

Creo que la propuesta de eliminar programas violentos o que contengan algún tipo de contenido sexual es bueno en horarios donde principalmente sean niños solos quienes vean la televisión, no obstante creo que el usar como fundamento un trabajo mal hecho es nefasto. El trabajo no da realmente luz sobre lo que ven nuestros niños y que influencia tiene en ellos. Existen estudios serios hechos aquí y en otros países, aquí parece ser que se trató de un proyecto final de trimestre en alguna materia, un trabajo mal hecho y sesgado.

Una última reflexión, ¿Es responsable de la respuesta violenta de los niños una vida familiar violenta, que es causada por la falta de empleo de los padres? ¿Esto mismo puede ocurrir si los padres ganan poco? ¿Es más importante restringir programas de televisión que garantizar condiciones de vida mejores para la población como trabajo, salud y medio ambiente?

Para los interesados dejo algunas referencias


López, I. J. R. y Cerda, C. A. A. (2001) Violencia en la televisión mexicana: Un análisis del contenido de los treinta programas con mayor nivel de audiencia. http://hiper-textos.mty.itesm.mx/num2rafyaida.html

Solis, L. B. (2007) La violencia… ¿entretenimiento infantil? http://www.amedi.org.mx/spip.php?article293

VSG (7 de Mayo de 2008) Propone PRI restringir transmisión de programas violentos. El Universal. http://www.eluniversal.com.mx/notas/504988.html

Pérez-Olmos, I., Pinzón, Á. M., González-Reyes, R. y Sánchez-Molano, J. (2005) Influencia de la Televisión Violenta en Niños de una Escuela Pública de Bogotá, Colombia Rev. Salud pública. 7 (1): 26-38, 2005

Aran S, Barata F, Busquet J, Medina P, Moron S. (2003) Infancia, violencia y televisión: usos televisivos y percepción infantil de la violencia en la televisión. Barcelona: Trípodos; 2003.

Black D, Newman M. (1995) Television violence and children. BMJ. 310(6975):273-274.

Reyes- Gómez U, Sánchez NP, López G y Velasco MA. (1999) Violencia en las caricaturas: Análisis de dos series de televisión. Revista Mexicana de Puericultura y Pediatría. 7(5): 22-8.

Robinson TN, Wilde ML, Navracruz LC, Haydel KF, Varaday A. (2001) Effects of reducing children’s television and video game use on aggressive behavior. Arch Pediatr Adolesc Med. 155(1):17-23.

Kremar M, Greene K. (1999) Predicting exposure to and uses of television violence. Journal of communication. 49(3): 24-45.

Cantor J, Nathanson AI. (1996) Children’s fright reactions to television news. Journal of Communication. 46(4): 139-52.

Greenfield P, Beagles-Roos J.( 1988) Radio vs. Television: Their cognitive impact on children of different socioeconomic and ethnic groups. Journal of communication. 38 (2): 71-92.

13 abril 2008

Función Sumar.Si

Pues bueno, otra vez escribiendo, solo que ahora he grabado un video para mostrar como se usa la función Sumar.Si de Excel.

Para ver el video den click en el título
Ojala y les guste.

05 septiembre 2007

Resolución de un sistema de ecuaciones simultaneas usando Visual Basic for Applications (2a parte)

Ahora estamos en condiciones de implementar una solución en VBA. Para este ejemplo, asumiremos que la entrada de datos se dará por medio de un formulario y la salida se dará en la hoja activa en la celda activa del libro de trabajo actual.

Primero debemos insertar un formulario, esto lo haremos desde la Ventana de aplicación de VBA

Al formulario agregaremos 6 cuadros de texto (textbox), 6 etiquetas (labels) y tres botones de comando (commamd buttons), lo que hará que nuestro formulario tenga ahora la siguiente apariencia:



Para resolver la ecuación utilizaremos la fórmula obtenida anteriormente, programemos el botón Ok.

Dentro del botón pongamos el siguiente código:


Private Sub CommandButton1_Click()


Dim a As Integer, b As Integer, c As Integer, _

d As Integer, e As Integer, f As Integer, _

X As Integer, Y As Integer, Cte As Integer

a = Me.TextBox1.Value

b = Me.TextBox2.Value

c = Me.TextBox3.Value

d = Me.TextBox4.Value

e = Me.TextBox5.Value

f = Me.TextBox6.Value

Cte = (a * e) - (b * d)

X = ((c * e) - (b * f)) / Cte

Y = ((a * f) - (d * c)) / Cte

ActiveCell.Select

With Selection

.HorizontalAlignment = xlRight

.VerticalAlignment = xlBottom

.ReadingOrder = xlContext

End With

Selection.Value = "X="

ActiveCell.Offset(0, 1).Select

Selection.Value = X

Selection.Offset(1, -1).Select

With Selection

.HorizontalAlignment = xlRight

.VerticalAlignment = xlBottom

.ReadingOrder = xlContext

End With

Selection.Value = "Y="

ActiveCell.Offset(0, 1).Select

Selection.Value = Y

End Sub
Esto código resolverá culaquier sistema de ecuaciones simultaneas

Etiquetas: , ,

Resolución de un sistema de ecuaciones simultaneas usando Visual Basic for Applications (1a parte)

Dos o más ecuaciones con dos o más incógnitas son simultáneas cuando se satisfacen los mismos valores para las incógnitas, por ejemplo, en las siguientes ecuaciones:



Son simultaneas porque:

x=3 y Y=2


Satisfacen ambas ecuaciones.


Para resolver este sistema de ecuaciones existen diferentes métodos algebraicos que pueden ser consultados en distintos libros (por ejemplo, Baldor, A. 1978, Ediciones y distribuciones códice, S.A., Madrid).
Este tipo de problemas se ha convertido en un ejercicio clásico en la enseñanza de programación. A aquellas personas que están dando sus primeros pasos en programación se les plantea la resolución de este tipo de ecuaciones. A continuación se tratará de explicar una solución utilizando Visual Basics for applications (VBA) corriendo en MS-Excel
Es importante mencionar que para resolver el ejercicio es necesario tener conocimientos básicos de álgebra, además de entender que son, para que sirven y como se declaran variables en VBA.
Para resolver un sistema de ecuaciones simultáneas en VBA hay que generar una fórmula sencilla que pueda ser implementada.


Por ejemplo si quisiéramos resolver:Es conveniente transformar este sistema en uno más general, por ejemplo:
De este modo podemos obtener una fórmula general que pueda ser implementada en VBA o cualquier otro lenguaje de programación.

A continuación se planteará el desarrollo de la fórmula para obtener el valor de “y”, el desarrollo del valor de “x” se deja al lector como ejercicio.

Sea el sistema de ecuaciones:



Si despejo “x” de la ecuación 1 obtendré:Sustituyo 3 en la ecuación 2:Resuelvo 4: Multiplico ambos miembros de la ecuación por “a”:

Reagrupo términos: Factorizo el lado izquierdo de la ecuación:
Despejo “y”Adicionalmente diremos que: De esta manera se está ahora en condiciones de implementar una solución en VBA.


Etiquetas: ,

23 agosto 2007

De regreso

Pues bien, he tenido problemas para poder entrar al blog, y es que olvidé mi nombre de usuario, pero bueno, después de más de tres meses estoy de regreso.
Publicaremos por aquí algunas cosas que creo interesantes. El problema es que justo ahora no se me ocurre nada.

30 octubre 2006

Tablas dinámicas en Excel

Las tablas dinámicas son una herramienta creada para analizar listas o bases de datos creadas en Excel o fuentes externas como archivos de texto o distintos manejadores de bases de datos. Sirven para organizar de manera sencilla y rápida grandes cantidades de datos procedentes de dichas listas. Permiten agrupar y filtrar la información por cualquiera de los campos de la lista, creando una tabla-resumen.
Para crearlas Excel cuenta con un asistente que en tres pasos genera un reporte de tabla dinámica, no obstante, existe un camino más rápido, la programación de tablas desde VBA.
A continuación les presento algunos ejemplos fáciles para generar tablas dinámicas desde el código de VBA.

Sub TablaDinamica1()

'Esta Macro genera una tabla dinámica a partir de un conjunto de datos
'que se encuentra en la hoja activa.
'Este método no muestra el Asistente para tablas dinámicas.
'No está disponible para orígenes de datos OLE DB.

Dim MiRango As String

'En esta macro se presupone que los datos inican en la celda A1
Range("a1").Select

'Con esta instrucción no importa cual sea el tamaño del rango de datos
'en Excel, automáticamente tomará todo el rango.

MiRango = Selection.CurrentRegion.Address

ActiveSheet.PivotTableWizard xlDatabase, Range(MiRango)


End Sub

Sub TablaDinámica2()
'
' Esta macro hace una tabla dinámica a partir de datos externos
'En este caso la ruta esta definida y apunta en esa sola dirección
'Este método no muestra el Asistente para tablas dinámicas.
'No está disponible para orígenes de datos OLE DB.
'
Dim Ruta As Variant
Dim Conexion As String, sql As String

sql = "SELECT PrimerNivel, ServicioGeneral, Rama, Servicio, Categoría FROM PruebaCubo PruebaCubo" 'Esta es la consulta sql a la base de datos

Ruta2 = "C:\Documents and Settings\JPaisano\Mis documentos\Felix\Cubos2"
Ruta = "C:\Documents and Settings\JPaisano\Mis documentos\Felix\Cubos2\Cubo.mdb"

Conexion = "ODBC;DSN=MS Access Database;DBQ=" & Ruta & ";DefaultDir=" & Ruta2 & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"

With ActiveWorkbook.PivotCaches.Add(xlExternal)
.Connection = Conexion
.CommandText = sql
.CreatePivotTable "", "Tabla dinámica3", DefaultVersion:=xlPivotTableVersion10 'En esta sección se incluye el destino, Nombre y versión de la tabla
End With


ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
End Sub

Sub MostrarRuta()
'Esta macro muestra cual es la ruta, por defecto, de trabajo
MsgBox "La ruta por definición es: " & Application.DefaultFilePath
End Sub

Sub TablaDinámica3()
'Esta macro genera una tabla dinámica a partir de datos externos
'que podemos seleccionar nosotros mismos
'Macro grabada el 26/10/2006 por José Félix Paisano
Dim Ruta As Variant
Dim Conexion As String, sql As String
Ruta = Application.GetOpenFilename("Bases de datos,*.mdb")
sql = "SELECT PrimerNivel, ServicioGeneral, Rama, Servicio, Categoría FROM PruebaCubo PruebaCubo"

Set Db = OpenDatabase(Ruta)

Ruta2 = Application.DefaultFilePath 'la base de datos debe estar guardada
'en la ruta definida de inicio

Conexion = "ODBC;DSN=MS Access Database;DBQ=" & Ruta & ";DefaultDir=" & Ruta2 & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
'Se establece la conexión al origen de datos
With ActiveWorkbook.PivotCaches.Add(xlExternal)
.Connection = Conexion
.CommandText = sql
.CreatePivotTable "", "Tabla dinámica3", DefaultVersion:=xlPivotTableVersion10 'En esta sección se incluye el destino, Nombre y versión de la tabla
End With

ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select

End Sub

Etiquetas: , ,