Trucos sobre manejo de softwarelibre y gnu linux. También a los programas que hago en gambas3, python, java, etc.... Consejos y trucos sobre otros programas: excel, word, internet, instalación de programas, Arduino y demás....
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:
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:
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.
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.
-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éisparte del código del ejemplo para crear un documento:
tex&=documento.texto("Ahoratambien puede escribir documentos en apaisado, sobre todo para tablasque 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("lista1")
tex&=documento.texto("Holaesto es el párrafo de la lista 1")
tex&=documento.ListaDato("lista2")
tex&=documento.texto("Holaesto es el párrafo de la lista 2. Bienvenido")
tex&=documento.CajaIcono("titulode la caja", "Estoes 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:
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"):
-->
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
'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))