You are on page 1of 5

Filtrar Datos de Reporte - Crystal Report

1 de 5

http://cristiantorresalfaro.blogspot.com/2013/01/filtrar-datos-de-reporte-c...

Blog dedicado a diferentes lenguajes de programacin.

pgina principal

contacto

Filtrar Datos de Reporte - Crystal Report

Translate

jueves, 3 de enero de 2013

Seleccionar idioma

Primeramente les deseo feliz ao 2013 a todos los lectores de mi blog espero que este ao este
lleno de muchas bendiciones para todos.

Datos personales
Quiero empezar este ao con un ejemplo que es muy comn y necesario a la hora de hacer

Cristian Torres

reportes con crystal report, y es que cuando creamos reportes en ocasiones tenemos la necesidad

Soy estudiante de informtica y me

de filtrar los datos por medio de uno o varios campos.

gusta mucho programar el lenguaje


que mas domino es C#, pero tambin
me gusta conocer sobre los dems

El ejemplo sera uno simple para que puedan entenderlo, la base de datos que usare para el
ejemplo solo cuenta con 2 tablas Categora y Articulo.

lenguajes.
Ver todo mi perfil

Reconocimientos

Microsoft Community Contributor (MCC)


Creamos un dataset(DsReporte) y agregamos 2 datatable que representaran las 2 tablas de la
base de datos ademas le agregamos los campos correspondiente de cada tabla y tambin
indicamos el tipo de dato de cada campo. Importante que cada datatable tiene que llamarse como

Etiquetas

el nombre de la tabla en la base de datos y ademas tener los mismos campos y mismo tipo de dato

C# - vb.net

que tienen en la base de datos.

Asp.Net
Entity Framework
LINQ
jQyery
JavaScript
Java
C++

11/4/2014 2:51 PM

Filtrar Datos de Reporte - Crystal Report

2 de 5

http://cristiantorresalfaro.blogspot.com/2013/01/filtrar-datos-de-reporte-c...

Python
Sql Server

Seguidores
Google Friend Connect

Miembros (88) Ms

Ya eres miembro? Iniciar sesin

Blog Archive
2013 (2)
febrero (1)
enero (1)
Filtrar Datos de Reporte - Crystal Report
2012 (50)

Visitantes

Creamos el reporte usando el dataset que creamos(el reporte mostrara todos los articulos de
nuestra base de datos).

Pginas vistas en total

477,318
Sigueme
Seguir a @krizz_alfaro

Ahora crearemos el cdigo que usaremos para llenar el dataset y mostrar los datos en el reporte
as que agregamos una clase(modulo en el caso de vb) llamada Datos y agregamos el siguiente
codigo.
1
2
3
4
5
6
7

public static DataTable CargarCategoria()


?
{
using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings[
{
DataTable dt = new DataTable();
string query = "SELECT * FROM Categoria";
SqlCommand cmd = new SqlCommand(query, cnn);

11/4/2014 2:51 PM

Filtrar Datos de Reporte - Crystal Report

3 de 5

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

http://cristiantorresalfaro.blogspot.com/2013/01/filtrar-datos-de-reporte-c...

SqlDataAdapter da = new SqlDataAdapter(cmd);


da.Fill(dt);
return dt;
}
}
public static DsReporte CargarArticulos()
{
DsReporte ds = new DsReporte();
using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings[
{
string query = "SELECT * FROM Articulo";
SqlCommand cmd = new SqlCommand(query, cnn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "Articulo");
return ds;
}
}
public static DsReporte FiltrarArticulos(int categoria)
{
DsReporte ds = new DsReporte();
using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings[
{
string query = "SELECT * FROM Articulo WHERE CatId=@cat";
SqlCommand cmd = new SqlCommand(query, cnn);
cmd.Parameters.AddWithValue("@cat", categoria);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "Articulo");
return ds;
}
}
Public Function CargarCategoria() As DataTable
?
Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings(
Dim dt As New DataTable()
Dim query As String = "SELECT * FROM Categoria"
Dim cmd As New SqlCommand(query, cnn)
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
Return dt
End Using
End Function
Public Function CargarArticulos() As DsReporte
Dim ds As New DsReporte()
Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings(
Dim query As String = "SELECT * FROM Articulo"
Dim cmd As New SqlCommand(query, cnn)
Dim da As New SqlDataAdapter(cmd)
da.Fill(ds, "Articulo")
Return ds
End Using
End Function
Public Function FiltrarArticulos(ByVal categoria As Integer) As DsReporte
Dim ds As New DsReporte()
Using cnn As New SqlConnection(ConfigurationManager.ConnectionStrings(
Dim query As String = "SELECT * FROM Articulo WHERE CatId=@cat"
Dim cmd As New SqlCommand(query, cnn)
cmd.Parameters.AddWithValue("@cat", categoria)
Dim da As New SqlDataAdapter(cmd)
da.Fill(ds, "Articulo")
Return ds
End Using
End Function

El metodo CargarCategoria() obtiene todos los datos de la tabla categora en un datatable.


El metodo CargarArticulos() llena el dataset con los datos de la tabla articulos.
El metodo FiltrarArticulos() tambin llena el dataset con los datos de la tabla artculos pero a
diferencia del anterior este los llena aplicando un filtro que en este caso es por medio del campo
CatId.
Ahora programaremos el cdigo que tendr nuestro Form.
1
2
3
4
5
6
7
8
9
10

private void Form1_Load(object sender, EventArgs e)


{
comboBox1.DataSource = Datos.CargarCategoria();
comboBox1.DisplayMember = "CatNombre";
comboBox1.ValueMember = "CatId";
comboBox1.SelectedIndex = -1;

DsReporte datos = Datos.CargarArticulos();


CrpReporte report = new CrpReporte();

11/4/2014 2:51 PM

Filtrar Datos de Reporte - Crystal Report

4 de 5

11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

http://cristiantorresalfaro.blogspot.com/2013/01/filtrar-datos-de-reporte-c...

report.SetDataSource(datos);
crystalReportViewer1.ReportSource = report;
}
private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
DsReporte datos = Datos.FiltrarArticulos(Convert.ToInt32(comboBox1.SelectedValue));
CrpReporte report = new CrpReporte();
report.SetDataSource(datos);
crystalReportViewer1.ReportSource = report;
}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
?
ComboBox1.DataSource = Datos.CargarCategoria()
ComboBox1.DisplayMember = "CatNombre"
ComboBox1.ValueMember = "CatId"
ComboBox1.SelectedIndex = -1
Dim da As DsReporte = Datos.CargarArticulos()
Dim report As New CrpReporte()
report.SetDataSource(da)
CrystalReportViewer1.ReportSource = report
End Sub
Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As System.Object
Dim da As DsReporte = Datos.FiltrarArticulos(Convert.ToInt32(ComboBox1.SelectedValue))
Dim report As New CrpReporte()
report.SetDataSource(da)
CrystalReportViewer1.ReportSource = report
End Sub

En el evento Load cargamos las categorias en un combobox y tambien cargamos en el reporte


todos los artculos.
En el evento SelectionChangeCommitted del combobox cargamos los datos en el reporte
dependiendo la categora seleccionada en el combobox, asi cada vez que el usuario seleccione
una categora del combobox los datos del reporte solo mostraran los artculos que pertenecen a la
categora seleccionada.

Eso es todo espero les sirva mucho saludos desde El Salvador...


Descargar Proyecto C#
Descargar Proyecto VB.Net

11/4/2014 2:51 PM

Filtrar Datos de Reporte - Crystal Report

5 de 5

http://cristiantorresalfaro.blogspot.com/2013/01/filtrar-datos-de-reporte-c...

Enviar por correo electrnico


un8:27
blog
Publicado por Cristian Escribe
Torres en
Compartir con Twitter
Compartir con Facebook
Etiquetas: C Sharp

0 comentarios:
Publicar un comentario en la entrada
Nota: solo los miembros de este blog pueden publicar comentarios.

Comentar como:

Publicar

Entrada ms reciente

Pgina principal

Entrada antigua

Copyright 2011 Cristian Torres. Free Blogspot Templates by Blogger Templates. Photography Logos. Css by csstemplatesmarket

11/4/2014 2:51 PM