Nube

viernes, 21 de diciembre de 2007

Generar un informe con tres commands relacionados en Datareport desde Visual Basic 6.0

Creamos un nuevo botón en el formulario (con éste ya vamos por el command4) realizamos su evento click

Código:
Private Sub Command4_Click()
'presentamos el datareport con unión triple de las campañas
DataEnvironment1.cmd_campañas
End Sub


Creamos a continuación tres commands en el dataenviroment1 mismamente.

Vamos a renombrarlos porque sino va a ser mucho lío. (más que nada para mi que no estoy acostumbrado a esos nombres xD)

cmd_campañas, cmd_chicas, cmd_citas mismamente

Ahora generamos las consultas con las nuevas tablas que he añadido: campañas, chicas y citas... ejem
(solamente tres ya lo se soy un vago pero no tengo ganas de entrelazar siete tablas para un ejemplo sencillito xD)

Mirar un poco la estructura de las tablas y veréis que campañas se enlaza con chicas y que chicas con citas.

Bueno generemos las consultas (click derecho encima del command/propiedades/... no voy a entrar en detalles)

cmd_campañas
Código:
SELECT id_temporada, eslogan, ini_fecha, lugar_apertura FROM campañas

cmd_chicas
Código:
SELECT nombre, id_chica, descripcion, dato3, dato2, dato1 FROM chicas where temporada=ident_temporada

además añadiremos en la pestaña relación:
relacionar con un comando primario, el comando primario: cmd_campañas, definición de relación: id_temporada to ident_temporada, agregar, aceptar y listo xD

cmd_citas
Código:
SELECT duracion, id_chica, id_cita, tipo, inc_fecha FROM citas WHERE id_chica=ident_chica
además añadiremos en la pestaña relación:
comando primario: cmd_chicas
definición de relación: id_chica to ident_chica,
agregar, aceptar y listo xD

Creamos el data report (DRcampañas) lo asociamos,
DataSource=DataEnvironment1
DataMember=cmd_campañas
Quitamos forzar a la cuadricula y le damos a obtener estructura y tenemos un monton de encabezados y pie de grupos xD

Posicionamos los campos que queremos mostrar (arrastrandolos desde el dataenviroment mismamente. Cada uno en su posición. Veréis que no os dejará meter los detalles de cmd_citas en encabezados y tal.

En cmd_camapañas_header irán los datos de la campaña.
En sus propiedades ForcePageBreak le metemos la opción 1- rptPageBreakBefore, para que haga divisiones(saltos de página) por cada campaña diferente.
En cmd_chicas_header metemos los datos de las chicas.
En cmd_citas_Detail los datos de las chicas y en cmd_chicas_footer meteremos un función count para contar sus citas y una sum para contar sus duraciones globalos mismamente, ave cuál ha soportado a más tios xD
Acordaros de poner en el queryclose del data report esto

Código:
Private Sub DataReport_QueryClose(Cancel As Integer, CloseMode As Integer)
DataEnvironment1.rscmd_campañas.Close
End Sub

Ala ya hemos terminado, igual hago otro tuto dentro de un par de días en el que enviemos en vez de un parámetro varios y creo que poco más se puede hacer con un data report xD

P.D. Visual Basic da un montón de problemas al trabajar con bases de datos y data reports amén de command dialogs de rutas. Ya que se hace la picha un lío y guarda la última ruta que maneja como la raíz del programa. Por lo tango es recomendable guardar la ruta en el load del programa en una variable general o pública si usamos más de un formulario/módulos
Código:
Mi_ruta=app.path

y luego al hacer algún cambio en command dialog o al abrir data reports meterle después
Código:
ChDir Mi_ruta 

Así lograremos que no de problemas, yo en el ejemplo no lo he hecho ya que en un par de pruebas que he hecho no me ha dado problemas xD

Subo el códido y el ejemplo:

DESCARGAR Ejemplo Data Report Visual Basic 6.0 by RobiHm

No hay comentarios: