Reportes imprimibles con gb.report

Hemos conseguido listar y filtrar los diferentes gastos, pero, no podemos pasear con el programa y la base de datos. La idea entonces es crear reportes que puedan imprimirse a convertirse al formato .pdf para poder visualizarlos en cualquier equipo, independientemente del sistema operativo.

Vamos entonces a modificar el formulario de gastos, agregando algunos botones más. Además de modificar su ubicación. Veamos el aspecto de la “barra” modificada.

barra de botonesHemos agregado5 botones, a saber : Btnreportelugar, btnreportematerial, btncombinado, btnreporteporfecha y nuestro viejo conocido btnsalir. Quizá algunos nombres parezcan innecesariamente largos, pero son 100 % descriptivos.

Para poder crear los reportes debemos activar el componente gb.report. Para ello vamos a la pestaña proyecto->propiedades->componentes y allí activamos la casilla de verificación correspondiente. Vamos ahora al árbol del proyecto, seleccionamos fuentes->nuevo-> reporte y en el cuadro de diálogo que se abre a continuación lo nombramos simplemente Reporte. Vamos a agregarle un ReportVBox y dentro de éste colocamos dos reportlabel, uno para el título y otro para las cabeceras de las columnas. Veamos su aspecto.

En tiempo de diseño

En tiempo de diseño

en tiempo de ejecución

en tiempo de ejecución

Para ver como ajustar sus propiedades podéis visitar el siguiente post :https://gambeando.wordpress.com/2012/09/21/agregando-el-reporte/

Bien, para llamar el reporte debemos hacerlo desde Fgastos, teniendo dos precauciones, declarar las variables “comunes” al principio del formulario

Private reporte As Report    ‘este es nuevo
Private hconn As Connection
Private hresul As Result
Public valor As String        ‘este es nuevo

e instanciarlo cada vez que lo llamamos con la palabra clave new

reportarLo que hacemos aquí es preguntar si la variable valor no es igual(<>)a una cadena vacía, que llama al reporte y me abra la vista previa o preview. En caso contrario mostramos un mensaje advirtiendo la ausencia de datos coincidentes. ¿Pero que es datos?

Datos es una variable, que tomara el valor de la sentencia sql correspondiente. Vamos a mostrar un ejemplo con el código para reportar por material.

sqlPor orden de línea, declaramos la variable local filtro y le asignamos el valor seleccionado en el combobox. Luego ejecutamos la sentencia sql y comprobamos el resultado. Si nos da false, le asignamos a la variable valor una cadena vacía para que al llamar al procedimiento reportar nos muestre el mensaje, en caso contrario asignamos a la variable valor el contenido de la sentencia sql.

Para pedir cada reporte, codificaremos el botón correspondiente llamando primero al procedimiento que genera la variable valor y luego a reportar. ¿Suena complicado? Para nada. Sigamos con el mismo ejemplo.

Public Sub Btnreportelugar_Click()

Por_lugar()
reportar

End

Pero si lanzamos esto ahora probablemente nos de un error, ya que el reporte aún no ha sido codificado. Os dejo a continuación el resto del código agregado a Fgastos y en un próximo post comenzaremos a codificar el reporte.

Public Sub Por_lugar()

Dim filtro As String

filtro = cbxlugar.Current.Text
hresul = hconn.Exec(“Select * from gastos where local like ‘” & filtro & “‘”)
If hresul.Available = False Then
valor = “”
Else
valor = “Select * from gastos where local like ‘” & filtro & “‘”
Endif
//**********************************************************
End

Public Sub Btnreportelugar_Click()

Por_lugar()
reportar

End
//***************************************************************
Public Sub btnreportematerial_Click()
Por_material()

reportar
End
//********************************************************
Public Sub btncombinado_Click()

combinado()
reportar

End
//*******************************************************
Public Sub combinado()

Dim filtro As String
Dim filtrob As String
filtrob = cbxmaterial.Current.Text
filtro = cbxlugar.Current.Text
hresul = hconn.Exec(“Select * from gastos where local like ‘” & filtro & “‘ and material like ‘” & filtrob & “‘ order by fecha desc”)
If hresul.Available = False Then
Valor = “”
Else
valor = “Select * from gastos where local like ‘” & filtro & “‘ and material like ‘” & filtrob & “‘ order by fecha desc”
Endif

End

//***************************************************************
Public Sub porfecha()

Dim Desde As String[]
Dim DesdeSql As String
Dim Hasta As String[]
Dim HastaSql As String

Desde = Split(Dbdesde.value, “/”)
‘ponemos lo guiones en barritas para que el motor sqlite3 lo reconozca
‘———————————————————-
DesdeSql = “‘” & Desde[2] & “-” & Desde[0] & “-” & Desde[1] & ” 00:00:00′”
Hasta = Split(Dbhasta.Value, “/”)
HastaSql = “‘” & Hasta[2] & “-” & Hasta[0] & “-” & Hasta[1] & ” 00:00:00′”

hresul = hconn.Exec(“Select * from gastos where datetime(fecha) between” & DesdeSql & ” and ” & HastaSql & “order by fecha desc “)
If hresul.Available = False Then
Valor = “”
Else
valor = “Select * from gastos where datetime(fecha) between” & DesdeSql & ” and ” & HastaSql & “order by fecha desc ”
Endif
End
//*****************************************************************
Public Sub btnreporteporfecha_Click()

porfecha()
reportar

End

Anuncios
Esta entrada fue publicada en programación y etiquetada , , , . Guarda el enlace permanente.

Una respuesta a Reportes imprimibles con gb.report

  1. Diego dijo:

    Excelente…me ha ido de maravilla!!
    Larga vida a Gambas y al Software libre

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s