Reporte usando DataReport con una consulta SQL

En este ejemplo podemos ver de una manera fácil como se llena un MSHFlexGrid y cómo mostrar un reporte usando DataReport con los datos del registro seleccionado.

El proyecto cuenta con una base de datos MS Access con una tabla Alumnos que contiene 5 campos.

Primero se hace la conexión a la base de datos:

Dim ConexionADO As New ADODB.Connection

Sub Conectar()
    ConexionADO.CursorLocation = adUseClient
    ConexionADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "/BaseDatos.accdb" _
            & ";Jet OLEDB:Database Password="
End Sub

Se llena el MSHFlexGrid haciendo una consulta a la tabla Alumnos:

 

Sub LlenarGrid()
    Dim Recor As New ADODB.Recordset
    Dim SQL As String
    
    SQL = "Select * from Alumnos order by nombre_apellidos_al ASC"
    Set Recor = ConexionADO.Execute(SQL)
    
    numcolumnas = 6
    
    With MSHFlexGrid1
         .Cols = numcolumnas  ' Numero de columnas que contendra el grid
         
         'titulos de las columnas
         .TextMatrix(0, 1) = "Codigo"
         .TextMatrix(0, 2) = "Nombre"
         .TextMatrix(0, 3) = "Identificacion"
         .TextMatrix(0, 4) = "Teléfono"
         .TextMatrix(0, 5) = "Dirección"
         
         'anchos de las columnas
         .ColWidth(0) = 0
         .ColWidth(1) = 900
         .ColWidth(2) = 3000
         .ColWidth(3) = 1500
         .ColWidth(4) = 1500
         .ColWidth(5) = 2500
    
         .DataMember = Recor.DataMember
         Set .DataSource = Recor.DataSource
         
         numfilas = Recor.RecordCount
         
         ' se va a cambiar el color de fondo de las filas pares
         For fil = 1 To numfilas
             .Row = fil  'seleccionamos la fia
             If fil Mod 2 = 0 Then 'si es un numero par
                 For Colum = 1 To numcolumnas - 1 'recorremos las columnas
                    .Col = Colum
                    .CellBackColor = &HFEEEDD 'se cambia el color de la celda
                Next Colum
             End If
         Next fil
    End With
    
    
End Sub

Se llama desde el evento Load del Formulario, se llama al procedimiento de Conectar y el de LlenarGrid

Private Sub Form_Load()
    Call Conectar
    Call LlenarGrid
End Sub

Para hacer el Reporte se Crear un nuevo reporte usando DataReport y se personaliza: Hay que tener en cuenta la propiedad DataFiel de los rptTextBox aqui se debo colocar el nombre del campo de la tabla que se desea mostrar.

El código para mostrar el Reporte de Alumno seleccionado en el Grid es el siguiente:

Private Sub cmdReporte_Click()
    Dim Recor As New ADODB.Recordset
    Dim SQL As String
    
    Codigoalumno = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1) 'codiog del alumno seleccionado
    
    If Codigoalumno <> "" Then ' si el codigo no esta vacio
        SQL = "Select * from Alumnos Where codigo_al = " & Codigoalumno 'se consultado el codigo del alumno seleccionado
        Set Recor = ConexionADO.Execute(SQL)
        
        DataReport1.DataMember = Recor.DataMember
        Set DataReport1.DataSource = Recor.DataSource
        
        DataReport1.Show ' se muestra el reporte
    Else
        MsgBox "Debe seleccionar un alumno", vbExclamation, "Error"
    End If
End Sub

Código del Proyecto:  Descargar

Total Page Visits: 5122 - Today Page Visits: 1

Deja una respuesta