Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta informes. Mostrar todas las entradas
Mostrando entradas con la etiqueta informes. Mostrar todas las entradas

domingo, 6 de octubre de 2019

Generador Informe Fotográfico: ejemplo de creación de informes usando .fodt


Generador Informe Fotográfico: ejemplo de creación de informes usando .fodt


Este programa nos sirve para generar un documento con todas las fotografías que tenga un directorio que seleccionamos, creando un fichero que nos lo abre con LibreOffice Write.

Nota: Aprovecha el nombre de los ficheros para ordenar las fotografias en el informe y los pone a pie de la fotografia. También crea un indice de fotografias que debemos actualizar cuando abramos el fichero en el libreoffice.

En el siguiente video la explicación de como usarlo:




Codigo fuente de la aplicación alogado en github: https://github.com/jsbsan/geninfoto

Descarga versión inicial: alojado en drive google


Fuente:
https://www.gambas-es.org/viewtopic.php?f=1&t=6666&highlight=fods&start=20

domingo, 26 de mayo de 2019

Qgis 3.xx: Tutoriales sobre como crear informes: Ejemplo Estadios de Futbol

Qgis: Tutoriales sobre como crear informes: Ejemplo Estadios de Futbol

He creado una serie de tutoriales para explicaros como crear informes en Qgis a partir de la versión 3.xx.


Nota:
Enlace a los datos y archivos de qgis del ejemplo completo:

Lista de Reproducción: (7 videos)

https://www.youtube.com/playlist?list=PLY1AHIjJwXVEwwTbKIrk83A_0JyTqTIyz

Uno a Uno...

QGIS: Tutorial Como Hacer Informes 1 Presentación
Os enseño el resultado final que vamos a obtener.




QGIS: Tutorial Como Hacer Informes 2 Datos de Ejemplo Estadios de Futbol
Los datos que vamos a usar.




QGIS: Tutorial Como Hacer Informes 3 Empezamos



QGIS: Tutorial Como Hacer Informes 4: Agregamos un MAPA LOCALIZACION
Creamos un pequeño mapa para indicar la localización del mapa principal.




QGIS: Tutorial Como Hacer Informes 5 Mostramos datos en el informe
Vamos a ver como se insertar  los datos (por ejemplo nombre del estacio, nº de espectadores), en los mapas generados.
 


QGIS: Tutorial Como Hacer Informes 6 ImagenesComo añadir imágenes relacionadas con el mapa. La base de datos tiene un campo en cada registro, donde se indica la ruta donde esta la imagen.



QGIS: Tutorial Como Hacer Informes 7 Detalles finales: Escalas, Marcadores, Marcos...
Vamos a añadir una escala enlazada con cada mapa representado, definir bordes,  añadir una imagen tipo "logo" y poner una figura (una elipse) en el centro del mapa.





Espero que os sea útil. Saludos !!!


domingo, 6 de enero de 2013

Creación de Informes: La clase Latex


Llevo varias entradas, comentadoos, pequeñas herramientas para crear informes:

Aunque esta el gb.Report (que para mí nunca ha sido fácil de usar), una de las cosas que he echado en falta, era algo realmente cómodo y fácil de usar, para generar informes en nuestras aplicación.

Pues, después de ver varios videos sobre texmaker (enlace), pensé en hacer una clase que aprovechara la potencia de Latex, para crear documentos y convertirlos en Pdf.

Os dejo aqui (enlace de descarga (versión ejemplo del video)) una aplicación de ejemplo de esta clase llamada ClassLatex, es muy sencilla de usar, y permite:
  • -Definir Cabeceras y Pies de páginas
  • -Insertar imagenes, con escalado y/o rotación
  • -Cajas
  • -Cajas de distintos marcos
  • -Cajas con icono y mensaje de distintas formas
  • -Citas y Bibliográficas
  • -Notas a pie de página
  • -Se pueden indicar anchos verticales y horizontales.
  • -Para poder añadir usepackage no incluidos inicialmente en la clase.
  • -HojaApaisadaInicio: (te escribe la pagina en apaisado (por si la tablas tienen muchas columnas)
  • - HojaApaisadaFin: (fin de la hoja en apaisado..)
    -Crear listas, secciones, subrayado, negrita, centrado de texto, etc.
  • -Tamaño de texto y tipo de letras 
Y tambien se puede introducir código directamente formateado como Latex (por ejemplo para introducir formulas)

Y especialmente estos dos métodos,
  • - ResultadoConsultaDB: Muy útil, ya que le pasas el resultado de una consulta de base de datos, y te muestra la tabla de resultados, con los nombres de campos de las consultas en la primera fila... 
  • - TablaGridview: escribe una tabla con los datos que tenga el gridview
  •  
    Videos tutoriales:                            1º Parte
 

2º parte


Aquí tenéis parte del código del ejemplo para crear un documento:
--> Dim documento As New ClassLaTex
Dim tex As String
Dim parrafada As String
Me.center
documento.Cabecera("Cabecera:izquierda", "Cabecera:centro", "Cabecera:derecha")
documento.Pie("Pie:izquierda", "Pie:centro", "Pie:derecha" & documento.numeropagina())
tex &= documento.LineaJustCentrado(documento.Tam3LargeP("Ejemplo de uso"))
tex &= documento.vspace(1.5) 'añado espacio entre las lineas
tex &= documento.LineaJustCentrado(documento.Tam4Huge("Clase ClassLatex"))
tex &= documento.vspace(1.5)
tex &= documento.LineaJustCentrado(documento.Tam2Large("Autor: JsbSan"))
tex &= documento.vspace(0.5)
tex &= documento.LineaJustCentrado(documento.fecha())
tex &= documento.vspace(3)
tex &= documento.texto("Esto es una prueba de uso de la clase ClassLaTex.")
.....
.....
tex &= documento.tiposmallCaps("hola esto es una prueba" & documento.Cita("David"))
tex &= documento.CrLf()
tex &= documento.Tipoitalica("Esto es talica" & documento.Cita("Juan"))
tex &= documento.CrLf()
tex &= documento.negrita("Esto es en negrita" & documento.NotaPieDePagina("nota: esta escrito en negrita"))
tex &= documento.subrayado(" y esto subrayado")
tex &= documento.texto("siento esto la letra normal")
tex &= documento.CrLf()
tex &= documento.LineaJustIzq("justificado a la izquierda")
tex &= documento.LineaJustCentrado("Centrado")
........
tex &= documento.texto("$$\\int_{x=0}^{\\infty} x\\,{\\rm e}^{-x^2} {\\rm d}x =\\frac{1}{2},\\quad {\\rm e}^{i\\pi}+1=0$$")
tex &= documento.CrLf()
tex &=documento.texto("Muestro datos de un gridviews:")
tex &=documento.CrLf()
tex &=documento.TablaGridViews(gridview1)
tex &= documento.CrLf()
tex &= documento.finPagina()
tex &= documento.HojaApaisadaInicio()
tex &= documento.texto("Consulta de una base de datos: ")
tex &= documento.CrLf()
tex &= documento.ResultadoConsultaDB(resultados,False)
tex &= documento.CrLf()
tex &= documento.texto("Ahora tambien puede escribir documentos en apaisado, sobre todo para tablas que tengan muchas columnas, puede ser muy útil ¿verdad?")
tex &= documento.HojaApaisadafin()
tex &= documento.finPagina()
tex &= documento.TablaDeContenido()
tex &= documento.finPagina()
tex &= documento.texto("Listas")
tex &= documento.CrLf()
tex &= documento.ListaEnumeradaInicio()
tex &= documento.ListaDato("lista 1")
tex &= documento.texto("Hola esto es el párrafo de la lista 1")
tex &= documento.ListaDato("lista 2")
tex &= documento.texto("Hola esto es el párrafo de la lista 2. Bienvenido")
tex &= documento.ListaEnumeradaFin()
tex &= documento.texto("Secciones:")
tex &= documento.CrLf()
tex &= documento.Seccion("Inicio")
tex &= documento.Seccion("Medio")
.....
tex &= documento.grafica(Application.Path & "/Dama.png", 0.5, 35)
tex &= documento.cajaMensaje(parrafada, 4)
tex &= documento.CajaIcono("titulo de la caja", "Esto es el texto largo",Application.Path &"/Dama.png", 0.5, 35, 4)
.... documento.BibliografiaFin()

 'generamos el documento
documento.compila(tex,"prueba")
y una captura:
 
Este es el pdf de ejemplo que se crea en el ejempo: descarga pdf

 Nota:
El código de esta clase es extremadamente sencillo, y es fácil portar a otros lenguajes: c++, java, python, etc..
 Fuente: Enlace al foro gambas-es.org:

lunes, 9 de abril de 2012

InformeHtml: Crear informes rápidos de consultas de bases de datos en Gambas

Una de las preguntas mas frecuentes que veo de los que empiezan con gambas  es de como crear informes de las consultas realizadas a bases de datos de una  manera rápida.

Existe un componente, el gb.report, que realiza esta misión, aunque aun esta en desarrollo, y se supone que en la versión 3.1 ya vendrá más optimizado.

Yo me he hecho una clase que genera un informe "rápido" en formato .html, pudiendose indicar colores de filas pares/impares, campos y el titulo.

Este informe lo podemos editar con cualquier programa de procesamiento de texto para terminar de darle forma al informe o publicar / imprimir directamente.

Lo mejor que tiene es que con solo pasarle el "result" de una consulta, el automaticamente detecta el nombre de las columnas y escribe completa la tabla (titulo, y filas de distinto color, segun le hayamos indicados).

Os dejo aqui el resultado que se puede obtener.

La forma de usar la clase es la siguiente:
0 º Definimos varias variables que vamos a usar...
Private conexion As Connection
Private resultado As Result
Private inf_html As New InformeHtml 'clase que genera el informe de la base de datos

1º Conectamos a la base de datos (en este caso una sqlite, con nombre "pruebasBD"):
-->
    conexion = New Connection
    conexion.type = "sqlite3"
    conexion.host = User.home
    conexion.name = "pruebasBD"



2º Obtenemos el resultado de una consulta: (resultado)
  sentenciaSql = "Select nombre,estrellas from hotel"
  resultado = Conexion.Exec(sentenciaSql)
 3º Definimos las caracteristicas de la instancia a la clase informeHtml

 'definos colores y titular
    inf_html.titulo = "<h3>2 Ejemplo de resultado de la consulta:</h3> <br>" & sentenciaSql

    'para ver colores en hexadecimal para hmtl: http://es.wikipedia.org/wiki/Colores_HTML
    inf_html.nombretablas = False ' si nombretabla es false, no se escribe el nombre de la tabla, si es true se escribe el nombre de la tabla
    inf_html.ColorCampos = "#7B68EE"
    inf_html.ColorFondoImpar = "#FFA07A"
    inf_html.ColorFondoPar = "#D3D3D3"

    'genero el codigo html del resultado (y con &= lo añado al anteriormente creado)
    textohtml &= inf_html.crea(resultado)

La variable textohtml contiene el codigo de la tabla, este lo podemos ver o editar en navegador o procesador de texto.

Os dejo tambien como es la clase informehtml:
' Gambas class file

Public nombretablas As Boolean 'si es true se escribe el nombre de la table, si es false, se escribe solo el nombre del campo
Public titulo As String 'titulo superior de la tabla resultante
Public ColorCampos As String 'color de los campos
Public ColorFondoPar As String 'color fondo filas pares
Public ColorFondoImpar As String  'colo fondo filas impares

Public Function Crea(resultados As Result) As String

    Dim devuelve As String
    Dim campo As New String[]
    Dim hfield As ResultField
    Dim a As Integer
    Dim contador As Integer
    Dim nombrecampo As String
    Dim campotemp As String

    devuelve = " <table  border=\"2\">\n"
    devuelve &= "<caption>" & Me.titulo & "</caption>\n"
    devuelve &= "<tr>\n"

    'escribe los campos
    For Each hField In resultados.Fields
        If nombretablas = True Then
            nombrecampo = Str$(hfield.name)
        Else
            campotemp = Str$(hfield.name)
            nombrecampo = Mid$(campotemp, RInStr(campotemp, ".") + 1, Len(campotemp))

        Endif

        devuelve &= "<th bgcolor=\"" & colorcampos & "\" scope=\"col\">" & nombrecampo & "</th>"
        campo.add(Str$(hfield.name))
    Next
    devuelve &= "</tr>\n"

    'escribir los datos
    Do While resultados.available
        contador += 1
        If (Int(contador / 2) * 2) = contador Then

            'es par
            devuelve &= "<tr bgcolor=\"" & ColorFondoPar & "\">"

        Else
            devuelve &= "<tr bgcolor=\"" & ColorFondoImpar & "\">"
        Endif

        For a = 0 To campo.count - 1

            devuelve &= "<td>" & resultados[campo[a]] & "</td>"
        Next
        devuelve &= "</tr>"
        resultados.MoveNext
    Loop

    devuelve &= "</table>"

    Return devuelve

End


Enlace de descarga del codigo fuente de ejemplo:

Enlace interesante: colores para html
http://es.wikipedia.org/wiki/Colores_HTML