Esta versión que os subo, realmente es "semi automático", ya que hay que darles los siguientes datos para crear el reporte:
-> Los nombre de los campos de la consulta que queremos que se muestren:
ejemplo:
infortmp.NombreDeCampos = ["Id", "nombre", "edad", "direccion"] ' importante: hay que poner exactamente el nombre del campo de la tabla de la base de datos ("Nombre" no es igual que "nombre")
-> Los anchos de esas columnas
infortmp.ListaAnchoDeCampos = ["30mm", "30mm", "30mm", "30mm"]
Nota:
Estos datos, usando las subrutinas que usa el programa "Siesta" de Shordi, se pueden obtener automáticamente (tanto nombres de campos de la base de datos como anchos).
Además hay que configurar estas variables:
infortmp.hconn = hconn ' pasar la conexion que tengamos con la base de datos
infortmp.sentenciaSql = "Select * from personas" ' sentencia que queremos que se realice para la generación del listado.
infortmp.NombreDeCabeceras = ["identificacion", "NOMBRE", "EDAD", "DIRECCION"] ' nombres que queremos que aparezcan en la cabecera (normalmente coinciden con los nombres de los campos, pero podemos cambiarlos)
infortmp.ListaAlineacionDeCampo = [Align.Center, Align.Center, Align.Center, align.center] ' alineacion de los datos
infortmp.tituloInforme = "Titulo" 'titulo del informe.
infortmp.sentenciaSql = "Select * from personas" ' sentencia que queremos que se realice para la generación del listado.
infortmp.NombreDeCabeceras = ["identificacion", "NOMBRE", "EDAD", "DIRECCION"] ' nombres que queremos que aparezcan en la cabecera (normalmente coinciden con los nombres de los campos, pero podemos cambiarlos)
infortmp.ListaAlineacionDeCampo = [Align.Center, Align.Center, Align.Center, align.center] ' alineacion de los datos
infortmp.tituloInforme = "Titulo" 'titulo del informe.
Ejemplo de uso:
Public Sub Button2_Click()
Dim infortmp As New Informe
hconn = New Connection
hconn.host = Application.path
hconn.name = "leonel"
hconn.type = "sqlite3"
Try hconn.Open()
'defino variables del informe:
infortmp.hconn = hconn 'para que nos pasen la conexion...
infortmp.sentenciaSql = "Select * from personas" 'propiedad publica donde nos pasa la sentencia a ejecutar
infortmp.NombreDeCabeceras = ["identificacion", "NOMBRE", "EDAD", "DIRECCION"]
infortmp.NombreDeCampos = ["Id", "nombre", "edad", "direccion"]
infortmp.ListaAnchoDeCampos = ["30mm", "30mm", "30mm", "30mm"]
infortmp.ListaAlineacionDeCampo = [Align.Center, Align.Center, Align.Center, align.center]
infortmp.tituloInforme = "En pruebas Base de datos Leonel"
infortmp.montajePagina()
infortmp.Preview()
End
Dim infortmp As New Informe
hconn = New Connection
hconn.host = Application.path
hconn.name = "leonel"
hconn.type = "sqlite3"
Try hconn.Open()
'defino variables del informe:
infortmp.hconn = hconn 'para que nos pasen la conexion...
infortmp.sentenciaSql = "Select * from personas" 'propiedad publica donde nos pasa la sentencia a ejecutar
infortmp.NombreDeCabeceras = ["identificacion", "NOMBRE", "EDAD", "DIRECCION"]
infortmp.NombreDeCampos = ["Id", "nombre", "edad", "direccion"]
infortmp.ListaAnchoDeCampos = ["30mm", "30mm", "30mm", "30mm"]
infortmp.ListaAlineacionDeCampo = [Align.Center, Align.Center, Align.Center, align.center]
infortmp.tituloInforme = "En pruebas Base de datos Leonel"
infortmp.montajePagina()
infortmp.Preview()
End
Con esto el programa crea el informe con sus etiquetas y relleno de datos, automaticamente (no es necesario ningún código más ni modificar graficamente los controles del reporte).
La clase "Informe" se encarga de ello
Falta añadir:
-Control de errores, por ejemplo si el programador se equivoca al poner el nombre de un campo de la base de datos que de información sobre ello y no un error interno del código de "informe".
- Cálculo automático del anchos y sacar nombre de los campos de la base de datos. Es sencillo de hacerlo viendo el codigo de Shordi, pero queria sacar una version "alpha" lo antes posible, para que lo probaseis.
Espero vuestros comentarios....
Nota: 5/4/2014
Añadido mejora para agrupar resultados y que no salgan repetidos (vease: http://foro.gambas-es.org/viewtopic.php?f=1&t=3750&highlight=
Añado dos nuevas propiedades:
infortmp.Agrupa = "proveedor" 'indica el nombre del campo que se debe de comprobar
infortmp.TextoAgrupa = "" 'pone el texto a sustituir (en este caso no escribiria nada)
infortmp.TextoAgrupa = "" 'pone el texto a sustituir (en este caso no escribiria nada)
Es importante que la sentencia SQL ordene los registros por el campo que queremos "agrupar":
infortmp.sentenciaSql = "Select * from suministros ORDER BY proveedor DESC" 'propiedad publica donde nos pasa la sentencia a ejecutar
Nota: 10/4/2014
He añadido el número de página en el informe que se genera (aparece arriba del titulo del informe):
ReportesAutomaticos-0.0.3.tar.gz | ||
Descripción: | Generador de Informes con gb.report, versión alpha Nota: 5/4/2014 He añadido una pequeña mejora, solicitada por jj231089 , para agrupar resultados Nota: 10/4/2014 Añadido el numero de página |
Descargar |
Nombre del archivo: | ReportesAutomaticos-0.0.3.tar.gz | |
Tamaño: | 8.69 KB | |
Descargado: | 104 veces |
ReportesAutomaticos-0.0.3.tar.gz | ||
Descripción: | Generador de Informes con gb.report, versión alpha Nota: 5/4/2014 He añadido una pequeña mejora, solicitada por jj231089 , para agrupar resultados Nota: 10/4/2014 Añadido el numero de página |
Descargar |
Nombre del archivo: | ReportesAutomaticos-0.0.3.tar.gz | |
Tamaño: | 8.69 KB | |
Descargado: | 104 veces |
ReportesAutomaticos-0.0.3.tar.gz | ||
Descripción: | Generador de Informes con gb.report, versión alpha Nota: 5/4/2014 He añadido una pequeña mejora, solicitada por jj231089 , para agrupar resultados Nota: 10/4/2014 Añadido el numero de página |
Descargar |
Nombre del archivo: | ReportesAutomaticos-0.0.3.tar.gz | |
Tamaño: | 8.69 KB | |
Descargado: | 104 veces |