martes, 18 de octubre de 2011

PASAR TABLA DE EXCEL A SQL

         Aquí dejo una función VBA para guardar una tabla Excel como consulta SQL en un archivo de texto, que podremos usar para  exportar la tabla Excel a cualquier base de datos.
         Se trata de una función VBA que toma como entradas el rango de datos donde está la tabla Excel, el nombre de la base de datos como opcional, el nombre de la tabla en SQL y el nombre del archivo de texto donde queremos guardar la consulta.
         Se debe copiar el código VBA en algún módulo del proyecto y la función estará disponible para usarse en cualquier hoja del libro.

        Ahora insertamos la función sql en cualquier celda del libro, pasándole los argumentos, separados por punto y coma. En este caso he seleccionado las celdas donde se encuentra la tabla que quiero grabar, y he tomado el resto de argumentos (base de datos, tabla y archivo donde grabar) de otras celdas.


     Le damos al enter y se nos crea el archivo en la ruta que le hemos dado. Lo abrimos, seleccionamos todo el contenido y lo copiamos. 

     Abrimos la base de datos y pegamos la consulta seleccionando la base de datos donde queremos grabar los datos.


     Ejecutamos la consulta y comprobamos el resultado. Ya tenemos la tabla de excel en nuestra base de datos.


        Y aquí está el código VBA:


Public Function sql(r As Range, dbase As String, tabla_sql As String, file As String)
'Funcion que crea un string con la consulta a la base de datos para pasar una excel a mysql
'La consulta sql la guarda en un archivo de texto .sql
'r = rango donde esta la tabla de excel
'dbase= nombre de la base de datos (si se deja en blanco, se crea la consulta llamando solo a la tabla)
'tabla= nombre de la tabla de mysql
'Nombre que queremos dar al archivo sql resultante (sin la extension)


Dim nfilas As Integer
Dim ncolumnas As Integer
Dim fila As Integer
Dim columna As Integer
Dim s As String


Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(file & ".sql", True) 'Archivo sql donde se guardará la consulta sql


fila = r.Row
columna = r.Column
nfilas = r.Rows.Count
ncolumnas = r.Columns.Count
If dbase = "" Then
    s = "INSERT INTO `" & tabla_sql & "` ("
    Else
    s = "INSERT INTO `" & dbase & "`.`" & tabla_sql & "` ("
    End If
    
For i = 1 To ncolumnas
    s = s & "`" & r(1, i).Text & "`"
    If i = ncolumnas Then
        s = s & ")VALUES "
        Else
        s = s & ", "
    End If
Next


a.write (s) 'Escribe la declaracion de campos en sql


'Comienza la escritura de los valores
For Each valor In r
If valor.Row > fila Then
 If valor.Column = columna Then
    a.write ("(")
    End If
 If valor.Text = "NULL" Then
    a.write ("NULL")
    Else
        a.write ("'" & valor.Text & "'")
        End If
        
 If valor.Column < columna + ncolumnas - 1 Then
    a.write (", ")
    Else
       a.write (")")
       End If
 If ((valor.Row < fila + nfilas - 1) And (valor.Column = columna + ncolumnas - 1)) Then
    a.write (", ")
    End If
End If
Next
a.write (";")
a.Close
End Function

sábado, 11 de junio de 2011

CERRAMOS POR RUINA TOTAL

Nadie duda de que esta crisis está haciendo estragos en el sector del comercio tanto o más que en el resto de sectores productivos del país, y así surgen anuncios de cese de negocios en la prensa como el que podíamos ver en el Diario de Navarra este fin de semana. Pero algo me dice que en este caso puede ser simplemente una interesante estrategia de marketing para conseguir ventas. ¿Tú qué opinas?

domingo, 1 de mayo de 2011

Medidor de ESR (ESR Meter)

Medidor de ESR (ESR Meter)

sábado, 30 de abril de 2011

Contador de agua con autómata Logo! de Siemens

    Vamos a ver cómo usar las entradas analógicas de los miniautómatas Logo! de Siemens, así como el acondicionamiento de la señal mediante los bloques correspondientes que nos proporciona el software de programación Logo!Soft Comfort.
    Para practicar, vamos a implementar un contador de agua digital, usando un transductor de caudal con salida 4-20mA de FLS. Este sensor mide la velocidad del agua por el conducto y a nosotros nos corresponde acondicionar la señal, parametrizando los bloques del programa de tal manera que tengamos en cuenta la sección de la tubería.
    Utilizamos una entrada analógica del Logo y la leemos una vez cada segungo, acumulando las medidas en un bloque aritmético, previo acondicionamiento para que la velocidad muestreada se convierta en caudal (litros por segundo). El resultado lo presentamos en la pantalla.
    En el siguiente vídeo, se muestra la simulación del programa.





    Es fácil convertir el contador de agua en un contador de energía, simplemente conectando dos sensores de temperatura NTC, a la entrada y salida de una caldera o de un intercambiador térmico y parametrizando algún bloque para que nos dé el resultado.
    Aquí os podéis descargar la fuente del programa en formato zip, y en la siguiente imagen podéis verlo.


viernes, 29 de abril de 2011

La Cabeza-Bomba

Los cambios de turno en el trabajo de mantenimiento se deben dedicar a compartir las tareas realizadas durante el día y a exponer las que se han quedado pendientes. En teoría, porque qué cojones, hay veces que tienes el día tonto y te apetece hacer budú con la cabeza de algún cabrón y rellenársela de dinamita, a ver si explota. Y ésto es exactamente lo que hemos hecho hoy. Aquí os presento el video.


martes, 12 de abril de 2011