Cómo llenar dinámicamente un informe de datos del grupo en Visual Basic

Resumen

Este artículo explica cómo crear un informe de datos de grupo mediante programación sin enlazarlo a los datos en tiempo de diseño.

Más información

Ejemplo paso a paso

  1. Abra un proyecto EXE estándar en Visual Basic. Se creará Form1 de forma predeterminada.
  2. Agregue un botón de comando a Form1.
  3. En el menú proyecto , haga clic en referenciasy, a continuación, agregue una referencia a Microsoft ActiveX Data Objects Library.
  4. En el menú proyecto , haga clic para agregar DataReport1. Si Agregar Datareport no está en el menú proyecto , agregar desde la ficha de diseñadores que se encuentra en el menú proyecto en componentes. (Asegúrese de que deselecciona Sólo elementos seleccionados en el menú proyecto en componentes).
  5. Abra Datareport1 y asegúrese de que las secciones de detalle, Encabezado de páginay Pie de página son visibles. Si están visibles las secciones Encabezado del informe o pie de página , quitarlos haciendo clic en el informe y quitar la marca de verificación de Mostrar informe encabezado y pie de página.
  6. Pulse el botón derecho y seleccione Insertar grupo encabezado y pie de página. Se agrega una nueva sección, Sección4, a la Datareport.
  7. Agregue un control rptLabel y control rptTextbox a la nueva sección.
  8. Agregue dos controles rptLabel y dos controles de rptTextbox a la sección detalle de la Datareport.
  9. Copie y pegue el siguiente código en el formulario:
          Dim cn As New ADODB.Connection      Dim rs As New ADODB.Recordset
    Dim cmd As New ADODB.Command
    Dim rs1 As New ADODB.Recordset
    Private Sub Command1_Click()
    Dim q As Integer
    Dim intCtrl As Integer
    Dim x As Integer
    Dim z As Integer
    x = 0
    q = 0
    z = 0

    With DataReport1
    .Hide
    Set .DataSource = rs
    .DataMember = ""
    With .Sections("section4").Controls
    For intCtrl = 1 To .Count
    If TypeOf .Item(intCtrl) Is RptLabel Then
    .Item(intCtrl).Caption = "City" & " :"
    q = q + 1
    End If
    If TypeOf .Item(intCtrl) Is RptTextBox Then
    .Item(intCtrl).DataMember = ""
    .Item(intCtrl).DataField = "City"
    End If
    Next
    End With

    q = 0
    With .Sections("Section1").Controls
    For intCtrl = 1 To .Count
    If TypeOf .Item(intCtrl) Is RptLabel Then
    .Item(intCtrl).Caption = rs1.Fields(q).Name & " :"
    q = q + 1
    End If
    If TypeOf .Item(intCtrl) Is RptTextBox Then
    .Item(intCtrl).DataMember = "Command1"
    .Item(intCtrl).DataField = rs1(z).Name
    z = z + 1
    End If
    Next intCtrl
    End With
    .Refresh
    .Show
    End With
    End Sub

    Private Sub Form_Load()

    Command1.Caption = "Show Report"
    cn.Open "Provider=MSDATASHAPE; Data Provider=Microsoft.JET.OLEDB.4.0;" & _
    "Data Source=D:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb;"

    With cmd
    .ActiveConnection = cn
    .CommandType = adCmdText
    .CommandText = " SHAPE {SELECT FirstName,Lastname,City FROM `Employees`} AS Command1 COMPUTE Command1 BY 'City'"
    .Execute
    End With

    With rs
    .ActiveConnection = cn
    .CursorLocation = adUseClient
    .Open cmd
    End With
    Set rs1 = rs(0).Value

    End Sub

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

240019 cómo llenar dinámicamente un informe de datos en Visual Basic
Propiedades

Id. de artículo: 289793 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios