Tema: Data Report
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/07/2005, 11:35
Avatar de IGNIS
IGNIS
 
Fecha de Ingreso: junio-2003
Mensajes: 70
Antigüedad: 20 años, 11 meses
Puntos: 0
Busqueda te ayudo con los reportes

hace tiempo que hice reportes, y pues yo los genere solo con el dataenvironment y funcionaron bien.

lo primero que tienes que hacer es crear una conexion en el environment y la configuras con tu DB, depues creas un Command, el command es una consulta a la DB.

puedes generar dos tipos de reportes, estaticos y dinámicos en cuanto a los parametros, por ejemplo si necesitas saber todos los clientes que tienes dados de alta, seria una consulta estatica y no necesitas parametros, pero si necesitas tal vez los clientes que se registraron en una fecha especifica o en un rango de fechas, tendrias que pasar parametros al reporte para que este muestre los datos filtrados.

ya que tienes el Dataenvironment listo, agregas un DataReport y enlazas este al DataEnvironment y al Command en las propiedades en tiempo de diseño:

Datasource=Dataenvironment1
Datamember=Command1

Ya en el Datareport te toca a ti diseñar tu reporte, tienes varias secciones:
Encabezado de Informe - aparece al inicio del informe, en la primer pagina
Encabezado de Página - al inicio de cada página util para nombre de columnas
Detalle - esta es la más importante, en esta situas el cuerpo del reporte, es decir la información, aqui situas los RptTextBox que sirven para mostrar la informacion de un campo de la consulta y los enlazas de la misma forma:

Datamember=Command1
Datafield=nombre_campo

Pie de Página - Puedes incluir hora en q se genero, pagina, etc.
Pie del Informe - Ahi generalmente se situan totales calculados a partir de ciertos campos, o el conteo de los registros q generó el reporte y aqui se utiliza el RptFunction, que no es más q un calculador de diferentes funciones como la suma de determinado campo, la media, etc...

el resto es cuestión de diseño y que al generarlo verifiques que los espacios, líneas, imágenes, etc cuadren con la hoja y los datos correctamente.

el siguiente paso es la generación del reporte, solo lo mandas llamar como cualquier formulario:

Código:
DataReport1.Show
DataEnvironment1.rsCommand1.Close
ahora si necesitas elaborar un reporte con parametros, es decir dinámico es practicamente igual, creas en Command con una consulta generica, algo asi:

select * from Clientes

lo importante es que incluyas ahi todos los campos q se utilizaran para q crees el DataReport en tiempo de diseño

ahora si necesitaras mostrar los datos de una consulta pero con un rango de fechas por ejemplo tendrias que hacer lo siguiente:

Código:
Private Sub Command1_Click()
Dim sentecia As String
If Text1.Text <> "" And Text2.Text <> "" Then
    sentencia = "select * from FACTURADAS where fecha between #" & Text1.Text & "# and #" & Text2.Text & "# order by hora"
    DataEnvironment1.rsCommand1.Open sentencia
    DataReport1.Show 1
    DataEnvironment1.rsCommand1.Close
Else
    sentencia = "select * from FACTURADAS where fecha=#" & Text1.Text & "# order by hora"
    DataEnvironment1.rsCommand1.Open sentencia
    DataReport1.Show 1
    DataEnvironment1.rsCommand1.Close
End If
End Sub
sentencia - es una variable string q almacena la consulta
FACTURADAS - es la tabla
fecha - campo de la tabla FACTURADAS
hora - campo de la tabla FACTURADAS

en el evento Command1_Click mandamos llamar al reporte, tomando en cuenta que ingrsen una sola fecha o un rango, en el primer caso se contempla que ingresen dos fechas en dos cajas de texto, generamos la consulta con las fechas dentro, y abrimos el recordset del Command1 del DataEnvironment, enseguida mostramos el Reporte precedido de un 1 que indica que el formulario sera Modal, es decir, se tiene que cerrar antes de regresar a la aplicación. y por ultimo dejamos cerrado el Recordset del Command1 del DataEnvironment, para volver a generar el reporte con diferentes parametros.

el segundo caso solo modifica la consulta por si solo se ingresara una fecha, la primera.
__________________
La verdad es la llave, no la puerta.