none
Crear reporte por rango de fechas. (Visual Studio 2010, SqlServer 2005 y Crystal Reports)

    Question

  • Hola...necesito crear un reporte de ventas en donde me muestre en un CrystalReportViewer las ventas de acuerdo a un rango de fechas que seleccione de dos DateTimePicker. Lo he buscado en varios foros pero no encuentro un ejemplo claro y preciso. Quizá me puedan ayudar aquí, se los agradecería muchísimo de verdad..........

    Este es un módulo donde hago la conexión a mi base de datos, y demás detalles:

     

    Module BDatos
        Public Conexion As SqlClient.SqlConnection
        Public comando As SqlClient.SqlCommand
        Public StrSQL As String
        Public dts As New DataSet
        Dim reader As IDataReader = Nothing
        Public ESTADO As ACCION
        Public CONFIRMA As DialogResult
        Public IDBUSQUEDA As Long
        Public BUSQUEDA As String
    _____________________________________________________
        Public Function Conectar() As Boolean
            Dim ret As Boolean
            Try
                comando.Connection.Open()
                comando.ExecuteNonQuery()
                ret = True
            Catch ex As Exception
                ret = False
                MsgBox("SE HA PRODUCIDO UN ERROR:" & ex.Message & " ", MsgBoxStyle.Critical, "")
            End Try
            comando.Connection.Close()
            Return ret
        End Function
    _____________________________________________________
        Public Function Leer(ByVal tabla As String) As Boolean
            Dim ret As Boolean
            dts.Clear()
            Dim adp As New SqlClient.SqlDataAdapter(StrSQL, Conexion)
            Try
                adp.Fill(dts, tabla)
                If dts.Tables(tabla).Rows.Count > 0 Then
                    ret = True
                End If
            Catch ex As Exception
                'MsgBox("ERROR AL REALIZAR LA OPERACIÓN", MsgBoxStyle.Critical, "")
            End Try
            Conexion.Close()
            Return ret
        End Function
    ______________________________________________________
        Public Sub INICIO()
            Conexion = New SqlClient.SqlConnection("server=ENRIQUE;database=pvnero;uid=sa;pwd=123;")
        End Sub
    ______________________________________________________
        Enum ACCION As Integer
            NUEVO = 1
            INSERTAR = 2
            EDITAR = 3
            ELIMINAR = 4
        End Enum
    _____________________________________________________
    End Module

    Este es el código del formulario en donde tengo el CrystalReportViewer y al ejecutar me muestra el CrystalReportViewer con todas las ventas que he realizado, pero mi pregunta es como hacerle para que me muestre solo las ventas de un rango de fecha por ejemplo del 01/11/2011  al  15/11/2011....:

     

    Public Class ReporteVentas
        Private Sub ReporteVentas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Call INICIO()
            Dim rep As New ReporteVentas1
            rep.Load(My.Application.Info.DirectoryPath & "ReporteVentas1.rpt")
            CrystalReportViewer1.ReportSource = rep
            CrystalReportViewer1.Refresh()
        End Sub
    End Class


    Nota: Ya enlacé el CrystalReportViewer a mi base de datos, a mi tabla o vista en este caso (vista_ventas2), ya agregué los campos al ReporteVentas1.rpt (diseño)......NECESITO AYUDA...de antemano GRACIAS...

     

    • Moved by Enrique M. MontejoMVP Thursday, November 17, 2011 6:27 AM consulta sobre Crystal Reports (De:Lenguaje VB.NET)
    Thursday, November 17, 2011 4:12 AM

Answers

  • Leandro solo para comentarte que ya encontré la solución a mi problema, creo que lo mejor será que deje aquí el código que utilizo para generar los reportes de acuerdo a un rango de fechas....bueno ahí va.......

    - FORMULARIO EN DONDE TENGO EL BOTÓN PARA GENERAR EL REPORTE. Controles (Botón Salir, Botón Generar, DateTimePickerInicio y DateTimePickerFinal):::::::::

    Public Class Reportes
    
    'Código para mi botón salir:
    
        Private Sub BtnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click
            Me.Close()
        End Sub
    
    'Código para el botón en donde hago la consulta a la base de datos, igualo el dataset al reporte y llamo al formulario contenedor del reporte:
    
        Private Sub BtnGenerarRep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGenerarRep.Click
            Dim venRepVen As New ReporteVentas ' el formulario contenedor
            Dim oRptPrueba As New ReporteVentas1 'el .rpt
            StrSQL = "select * from vista_ventas2 where venfecha>'" & DTPInicio.Text.Trim & "' and venfecha<='" & DTPFinal.Text.Trim & "'"
            If Leer("vista_ventas2") = True Then
                oRptPrueba.SetDataSource(dts.Tables("vista_ventas2"))
                venRepVen.CrystalReportViewer1.ReportSource = oRptPrueba
                venRepVen.CrystalReportViewer1.Refresh()
                venRepVen.ShowDialog()
            Else
                MessageBox.Show("No existen ventas para este rango de fechas", "Pvnero", MessageBoxButtons.OK)
            End If
        End Sub
    
    
    'Código para el Load de mi formulario. Las propiedades toolTipo son opcionales, no influyen en el funcionamiento de la generación del reporte:
    
        Private Sub Reportes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Call INICIO()
            DTPDia.Format = DateTimePickerFormat.Custom
            DTPDia.CustomFormat = "dd/MM/yyyy"
            DTPInicio.Format = DateTimePickerFormat.Custom
            DTPInicio.CustomFormat = "dd/MM/yyyy"
            DTPFinal.Format = DateTimePickerFormat.Custom
            DTPFinal.CustomFormat = "dd/MM/yyyy"
            Dim toolTip1 As New ToolTip()
            toolTip1.AutoPopDelay = 5000
            toolTip1.InitialDelay = 1000
            toolTip1.ReshowDelay = 500
            toolTip1.ShowAlways = True
            toolTip1.SetToolTip(Me.BtnGenerarRep, "Generar Reporte")
            toolTip1.SetToolTip(Me.BtnSalir, "Salir")
        End Sub
    End Class

    En el formulario contenedor del CrystalReportViewer no necesita absolutamente ningún código.
    Espero y le sirva a alguien este código. Saludos Leandro y gracias por el espacio.

    Estudiante Universitario Mexicano..jeje

    MsgBox("El que tiene fe en si mismo no necesita que los demás crean en él")

    • Marked as answer by Luis Mariscal Wednesday, October 10, 2012 12:56 AM
    Saturday, November 19, 2011 4:57 AM

All replies

  • hola

    si bien en este ejemplo no se crea un reporte, si se filtra por un rango de fechas

    [ADO.NET] Filtrar rango de fechas

    podrias cargar un dataset tipado con el resultado de la query y vincular este al reporte de crystal

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, November 17, 2011 4:49 AM
  • Muchas gracias Leandro, pero aún así  no consigo generar el reporte por rango de fechas............creo que tendré que ver como me las ingenio para hacerlo o pedir ayuda externa. De todos modos muchas GRACIAS...Quedo abierto a cualquier otra opción o respuesta para solucionar mi problema..
    Thursday, November 17, 2011 5:46 PM
  • Leandro solo para comentarte que ya encontré la solución a mi problema, creo que lo mejor será que deje aquí el código que utilizo para generar los reportes de acuerdo a un rango de fechas....bueno ahí va.......

    - FORMULARIO EN DONDE TENGO EL BOTÓN PARA GENERAR EL REPORTE. Controles (Botón Salir, Botón Generar, DateTimePickerInicio y DateTimePickerFinal):::::::::

    Public Class Reportes
    
    'Código para mi botón salir:
    
        Private Sub BtnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click
            Me.Close()
        End Sub
    
    'Código para el botón en donde hago la consulta a la base de datos, igualo el dataset al reporte y llamo al formulario contenedor del reporte:
    
        Private Sub BtnGenerarRep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGenerarRep.Click
            Dim venRepVen As New ReporteVentas ' el formulario contenedor
            Dim oRptPrueba As New ReporteVentas1 'el .rpt
            StrSQL = "select * from vista_ventas2 where venfecha>'" & DTPInicio.Text.Trim & "' and venfecha<='" & DTPFinal.Text.Trim & "'"
            If Leer("vista_ventas2") = True Then
                oRptPrueba.SetDataSource(dts.Tables("vista_ventas2"))
                venRepVen.CrystalReportViewer1.ReportSource = oRptPrueba
                venRepVen.CrystalReportViewer1.Refresh()
                venRepVen.ShowDialog()
            Else
                MessageBox.Show("No existen ventas para este rango de fechas", "Pvnero", MessageBoxButtons.OK)
            End If
        End Sub
    
    
    'Código para el Load de mi formulario. Las propiedades toolTipo son opcionales, no influyen en el funcionamiento de la generación del reporte:
    
        Private Sub Reportes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Call INICIO()
            DTPDia.Format = DateTimePickerFormat.Custom
            DTPDia.CustomFormat = "dd/MM/yyyy"
            DTPInicio.Format = DateTimePickerFormat.Custom
            DTPInicio.CustomFormat = "dd/MM/yyyy"
            DTPFinal.Format = DateTimePickerFormat.Custom
            DTPFinal.CustomFormat = "dd/MM/yyyy"
            Dim toolTip1 As New ToolTip()
            toolTip1.AutoPopDelay = 5000
            toolTip1.InitialDelay = 1000
            toolTip1.ReshowDelay = 500
            toolTip1.ShowAlways = True
            toolTip1.SetToolTip(Me.BtnGenerarRep, "Generar Reporte")
            toolTip1.SetToolTip(Me.BtnSalir, "Salir")
        End Sub
    End Class

    En el formulario contenedor del CrystalReportViewer no necesita absolutamente ningún código.
    Espero y le sirva a alguien este código. Saludos Leandro y gracias por el espacio.

    Estudiante Universitario Mexicano..jeje

    MsgBox("El que tiene fe en si mismo no necesita que los demás crean en él")

    • Marked as answer by Luis Mariscal Wednesday, October 10, 2012 12:56 AM
    Saturday, November 19, 2011 4:57 AM