Yo lo he hecho a patir de procedimientos almacenados, ejm:
'Est ereporte me muestra los lotes q estan a punto de caducar (X) dias le faltan
'para caducar, por ejm (180) los lotes caules su fecha de caducidad vencera en
'180 dias como maximo y los que se encuentran entre 0 y 180 dias
'CRv=CrystalReportViewer
'Supuestamente esto ya lo tengo en la bd
'set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[LotesAlmacenPorCaducar]
@IdAlmacen int,
@nDias int
AS
BEGIN
SET NOCOUNT ON;
select l.IdLote,l.Lote,a.NombreArticulo as Articulo,l.Cantidad,l.FechaAlta,l.FechaBaja,l.FechaCaducidad as Caducidad,datediff(day,convert(datetime,getdate(),101), convert(datetime,fechacaducidad,103))as Dias from lotes l, Articulos a where a.IdArticulo=l.IdArticulo and l.IdAlmacen=@IdAlmacen and l.baja=0 and l.Devuelto=0 AND (datediff(day,convert(datetime,getdate(),101), convert(datetime,fechacaducidad,103)) > 0) and (datediff(day,convert(datetime,getdate(),101), convert(datetime,fechacaducidad,103)) < @nDias) order by Dias asc
END
''''''''''''''''''''''''''''''''''''''''''''Modulo'
Esto lo tengo declarado en un modulo
Public R_IdAlmacen As Int32
Public R_Cadena As String
'''''''''''''''''''''''''''''''
'''''''''''''''imports dentro de mi aplicacion
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Dim nEmpresa As New ParameterValues()
Dim nParametro1 As New ParameterValues()
Dim nParametro2 As New ParameterValues()
Dim Param1 As New ParameterDiscreteValue()
Dim Param12As New ParameterDiscreteValue()
Dim Empresa As New ParameterDiscreteValue
'boton imprimir reporte en mi aplicacion
Private Sub cmdImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdImprimir.Click
Try
Dim Impresion As New Impresiones
CargarReporte = "LotesAlmacenPorCaducar.rpt"
R_IdAlmacen = cboAlmacenes.SelectedValue 'valor que pasare al reporte
R_Cadena = cboAlmacenes.Text'valor que pasare al reporte
Impresion.ShowDialog()
Catch ex As Exception
ex.Data.Clear()
End Try
End Su
'Dentrlo del formulario Impresiones tengo el CrystalReportViewer el evento Load
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ConfigureCrystalReports(CargarReporte)
CRv.Zoom(90)
end sub
'Procedimiento dentro del formulario Impresiones
Private Sub ConfigureCrystalReports(ByVal Reporte As String)
Try
Dim reportPath As String = Application.StartupPath & "\Reportes\" & Reporte
CRv.ReportSource = reportPath
Param1.Value = R_Cadena
Param2.Value = R_IdAlmacen
Empresa.Value = StrEmpresa' Encabezado de mi reporte (Nombre empresa)
nParametro1.Add(Param1)
nParametro2.Add(Param2)
nEmpresa.Add(Empresa)
Dim Parametros As ParameterFields = CRv.ParameterFieldInfo
Parametros(0).CurrentValues = nEmpresa
Parametros(1).CurrentValues = nParametro2
Parametros(2).CurrentValues = nParametro1
Catch ex As Exception
ex.Data.Clear()
End Try
End Sub
''Este procedimento en mi aplicacion tiene un select con 28 opcions (reportes)
'las cuales en una sola ventana puedo mostrar todos los reportes,
'Logicamente que en el reporte hago referencia a los campos del procedimiento
'almacenado arrastrando los campos al reporte.
Ejecuto la aplicacion,paso los valores, ejecuta el
'stored proc y me devuelve el reporte.
Espero hayas entendido..... y sobre todo que te ayude un poco