none
Crystal Report RRS feed

  • Pregunta

  • Porfavor tengo un problemita con Crystal Reports, estoy utilizando Crystal Report 9 con vb6 por lo que tengo entendido es hacer el reporte en crystal bueno en mi caso y abrirlo con vb6 por código es mas rápido al momento de cargar y es mas veloz que el data reports eso es lo que tengo entendido, el problema es como abro un reporte en vb6 si me pueden enseñar cual es la manera correcta de hacerlo, Agradesco anticipadamente su gentil colaboración.

    Pedro Avila

    Lima - Perú

    sábado, 20 de noviembre de 2010 0:30

Todas las respuestas

  • Tenes que tener un form con el viewer y poner en referencias el craxdrt

    Luego tenes una funcion mas o menos asi:

    Sub Reporte_CRVw(ByVal Impresora As Boolean, _
                     ByRef RefParametros As Variant, _
                     ByVal Reporte As String, _
            Optional ByVal Titulo As String, _
            Optional ByVal Orden As String, _
            Optional ByVal Orden1 As String, _
            Optional ByVal SiMuestraArbol As Boolean = True, _
            Optional ByVal ZoomRpt As Integer = 80, _
            Optional ByVal UsaParametros As Boolean = True, _
            Optional ByRef BuscaUltimaHoja As Long = 0, _
            Optional ByRef RefFormulas As Variant, _
            Optional ByVal UsaFormulas As Boolean = False, _
            Optional ByVal QuitaEspera As Boolean = True)
      Dim Contador         As Integer
      Dim Total            As Integer
      Dim TotalFormulas    As Integer
      Dim ContadorFormulas As Integer
      Dim CRReporte        As Report
      Dim CRApp            As New CRAXDRT.Application
      Dim Coneccion(4)     As Variant
      On Error GoTo Err_Reporte_CRVw
      Set CRReporte = CRApp.OpenReport(App.Path & "\" & Reporte & ".RPT")
      Total = UBound(RefParametros)
      DoEvents
      With CRReporte
        ObtenerIniConnect 0, Coneccion
        .Application.LogOnServer "pdsodbc.dll", "SGV", Coneccion(4), Coneccion(2), Coneccion(3)
        If UsaParametros Then
          For Contador = 1 To Total
            If .ParameterFields(Contador).ValueType = 16 Then
              .ParameterFields(Contador).AddCurrentValue CVDate(Left(RefParametros(Contador), 19))
            Else
              .ParameterFields(Contador).AddCurrentValue RefParametros(Contador)
            End If
          Next
        End If
        If Orden <> "" Then
          With .Database.Tables(1).Fields
            Total = .Count
            For Contador = 1 To Total
              If .Item(Contador).Name = Mid(Orden, 2) Then
                CRReporte.RecordSortFields(1).Field = .Item(Contador)
                CRReporte.RecordSortFields(1).SortDirection = IIf(Left(Orden, 1) = "+", crAscendingOrder, crDescendingOrder)
                Exit For
              End If
            Next
            For Contador = 1 To Total
              If .Item(Contador).Name = Mid(Orden1, 2) Then
                CRReporte.RecordSortFields(2).Field = .Item(Contador)
                CRReporte.RecordSortFields(2).SortDirection = IIf(Left(Orden1, 1) = "+", crAscendingOrder, crDescendingOrder)
                Exit For
              End If
            Next
          End With
        End If
        Total = .FormulaFields.Count
        For Contador = 1 To Total
          If .FormulaFields(Contador).Name = "{@F_SubTitulo}" Then
            .FormulaFields(Contador).Text = "'" & Titulo & "'"
            Exit For
          End If
        Next
        If UsaFormulas Then
          TotalFormulas = UBound(RefFormulas, 1)
          For ContadorFormulas = 1 To TotalFormulas
            For Contador = 1 To Total
              If .FormulaFields(Contador).Name = "{@F_" & RefFormulas(ContadorFormulas, 1) & "}" Then
                .FormulaFields(Contador).Text = RefFormulas(ContadorFormulas, 2)
                Exit For
              End If
            Next
          Next
        End If
      End With
      If Impresora Then
        With CRReporte
          .DisplayProgressDialog = False
          .PrintOut False
        End With
      Else
        Load FrmViewerCR
        R
        With FrmViewerCR.CRVw
          .ReportSource = CRReporte
          .EnableGroupTree = SiMuestraArbol
          If BuscaUltimaHoja = 0 Then
            FrmViewerCR.Visible = True
            DoEvents
          End If
          .ViewReport
          R
          DoEvents
          If BuscaUltimaHoja = -1 Then
            .ShowFirstPage
            DoEvents
            .ShowLastPage
            DoEvents
            BuscaUltimaHoja = .GetCurrentPageNumber
            DoEvents
            Unload FrmViewerCR
            Set FrmViewerCR = Nothing
          Else
            .Zoom (ZoomRpt)
          End If
        End With
      End If
    Finalizar:
      If QuitaEspera Then
        Unload FrmEspera
        Set FrmEspera = Nothing
        F
      End If
      Set CRReporte = Nothing
      Set CRApp = Nothing
      Exit Sub
    Err_Reporte_CRVw:
      Mensaje_Error Err, Error, Mod_Titulo, Mod_Formulario, "Reporte_CRVw"
      GoTo Finalizar
    End Sub

    sábado, 20 de noviembre de 2010 0:49
  • me parece que es demaciado código no habra otra alternativa?

     

    Pedro

    sábado, 20 de noviembre de 2010 2:15
  • Es la manera de hacerlo con el crxdrt,tiene la asignacion de parametros,la base de datos,los filtros,lo normal en un reporte.
    martes, 23 de noviembre de 2010 20:44