Boletín mugperu Digital - Julio 2009!
  Search 
Saturday, May 19, 2012 ..:: Foros de Discusión ::.. Register  Login
Foros MUGPERU Minimize
Subject: Creacion de Reportes Dinamicos con DataReport y ADO Shape
Prev Next
You are not authorized to post a reply.

Author Messages
Lduenas
Posts:25

11/04/2005 11:47 AM  

Hola:

Para crear un reporte por codigo que realize una agrupación o un agregado (calculo) en ADO con VB6 tienes que usar ADO Shape que es un Provedor que viene con OLEDB.
 
A continuación explico como crear un Reporte de Productos agrupados por Categorias y que totalice el Precio Promedio x Categoria de la BD Northwind de SQL Server:
 
1. Declarar en un Modulo lo siguiente:
 
Public con As ADODB.Connection
Public rst As ADODB.Recordset
 
Public Sub Conectar()
    Set con = New ADODB.Connection
    con.Provider = "MSDataShape"
    con.ConnectionString = "Data Provider=SQLOLEDB;uid=sa;data source=(local);initial catalog=Northwind"
    con.Open
End Sub
Public Sub CrearShape()
    Set rst = New ADODB.Recordset
    rst.CursorLocation = adUseClient
    rst.Open "SHAPE {Select ProductID,ProductName,UnitPrice,CategoryID From Products} As rstProductos Compute rstProductos, Avg(rstProductos.UnitPrice) As PrecioProm By CategoryID", con
End Sub
 
2. En un Formulario para mostrar el Recordset creado añadir un Control MS Hierarquical FlexGrid (dgdProducto) y un boton de comando que muestre el reporte (cmdReporte), escribir el sguiente codigo:
 
Private Sub Form_Load()
    Conectar
    CrearShape
    Set dgdProducto.DataSource = rst
End Sub

Private Sub cmdReporte_Click()
    drtProducto.Show
End Sub

3. Crear un Reporte con el DataReport añadiendo una Cabecera y un Pie de Grupo:
- En la Cabecera del Grupo (Section6) añadir un RptTextBox (txtCategoria) y 3 RptLabel (lblCodigo, lblNombre y lblPrecio)
- En la seccion de Detalles (Section1) añadir 3 RptTextBox (txtCodigo, txtNombre y txtPrecio)
- En el Pie del Grupo (Section7) añadir un RptTextBox (txtPrecioProm)
 
4. En el Evento Initialize del Reporte programar lo siguiente:
Private Sub DataReport_Initialize()
    Set Me.DataSource = rst
    Me.Sections("Section6").Controls("txtCategoria").DataField = "CategoryID"
    Me.Sections("Section1").Controls("txtCodigo").DataMember = "rstProductos"
    Me.Sections("Section1").Controls("txtCodigo").DataField = "ProductID"
    Me.Sections("Section1").Controls("txtNombre").DataMember = "rstProductos"
    Me.Sections("Section1").Controls("txtNombre").DataField = "ProductName"
    Me.Sections("Section1").Controls("txtPrecio").DataMember = "rstProductos"
    Me.Sections("Section1").Controls("txtPrecio&uot;).DataField = "UnitPrice"
    Me.Sections("Section7").Controls("txtPrecioProm").DataField = "PrecioProm"
End Sub
 
Espero haber sido lo mas claro posible, si quieren encontrar mas informacion de como crear Recordset Jerarquicos busquen ADO Shape.
 
Saludos:
MCP, MOUS, MCAD, MCSD NET, MCT
Luis Dueñas
You are not authorized to post a reply.
Forums > Otros Temas y Discusiones de Interés > Herramientas para Generación de Reportes > Creacion de Reportes Dinamicos con DataReport y ADO Shape



ActiveForums 3.7
        
Copyright 2001-2012 MUGPERU   Terms Of Use  Privacy Statement