Вы находитесь на странице: 1из 23

22/05/2011 Leandro Tuttini Blog: Crystal Reports

Compartir Informar sobre mal uso Siguiente blog» Crear un blog Acceder

Leandro Tuttini Blog

Mostrando las entradas más recientes con la etiqueta


Archivo del blog
Crystal Reports Mostrar las entradas más antiguas
▼ 2011 (9)
domingo 27 de febrero de 2011 ► mayo (2)
Crystal Reports – Cargar imagen usando una ► abril (2)
capa de reportes
► marzo (2)

▼ febrero (3)
Introducción
Crystal Reports –
En esta oportunidad se profundizara el trabajo de imágenes Cargar imagen
pero apuntando a Reportes, concretamente c on el uso de
usando una c apa
Crystal Reports.
de...
Para este artíc ulo se c ontinua con el ejemplo de uno previo:
[ASP.NET] Loc kear
[WinForms] Edic ión Empleados – Grabar imagen en base de Edic ión de Entidades
datos
[WinForms] Edic ión
En el anterior se listaba y editaba los datos del empleado, Empleados – Grabar
incluida sus fotografías, en cambio en este artículo se vera imagen en ba...
como listar en un reporte esta misma información.

El resultado del reporte final del reporte seria: ► 2010 (55)

► 2009 (22)

► 2008 (1)

Datos personales
LE A ND R O
TUTTI NI

Ver todo mi
perfil

Microsoft MVP C# 2010

ltuttini.blogspot.com/…/Crystal Reports 1/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports
Etiquetas

ADO.NET (10)
ASP.NET (18)
C# (24)
Crystal Reports (5)
DataGridView (13)
GridView (6)
JavaScript (1)
jQuery (9)
Linq (3)
MS Ac cess (2)
N-Tier (5)
NHibernate (1)
Office (1)
VB.NET (5)
Se analizara además como inc luir las imágenes provenientes de Visual Studio (1)
una base de datos, y también un logo tomado de un arc hivo de
imagen. WinForm (25)

Capa de Reportes
Seguidores
Esto quizás aplique un poco mejor con una arquitectura en
capas, pero en este caso aunque no las haya definido del todo, Seguir
se puede separa en un proyecto concreto la responsabilidad de Google Friend Connect
crear los reportes.
Seguidores (87) Más »
Es por eso que se observara en la solución un proyecto de
nombre ReportsLayer, este será el encargado de:

- Enc apsular la diseño del reporte

- Definición y estruc tura de datos que requieres el reporte, en


este c aso implementada en dataset tipados

- La carga de la información, conec tándose para ello


directamente a los datos, esta c apa no hará uso del
DataAc cess, porque al usar dataset la carga de datos se torna
particular, por lo tanto su funcionalidad requiere una c onexión
directa.

ltuttini.blogspot.com/…/Crystal Reports 2/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

La idea con esto es separar funcionalidad y además cubrir un


defecto que tiene Crystal Reports, en donde el diseñador solo
toma c omo entidades objetos que estén loc al al proyec to
donde se enc uentra el rpt. Muchas veces poner en la
Presentación un reporte implicaría además poner allí mismo los
dataset tipados, lo c ual ensucia el modelo.

Definición y carga de datos en el DataSet

Para este reporte se definió un dataset tipado con dos


datatable en su interior.

ltuttini.blogspot.com/…/Crystal Reports 3/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

Para al c arga de los empleados se hará uso de la func ionalidad


de la c lase EmpleadosDAL definida dentro del propio proyecto
de Reportes.

01. internal static class EmpleadosDAL


02. {
03.
04. internal static Empleados ObtenerTodos()
05. {
06. Empleados empleados = new Empleados();
07.
08. using (SqlConnection conn = new
SqlConnection(ConfigurationManager.Con
nectionStrings["default"].ToString()))
09. {
10. conn.Open();
11.
12. string query = @"SELECT IdEmpleado,
Nombre, Apellido, FechaNacimiento,
EstadoCivil, Imagen
13. FROM Empleados";
14.
15. SqlCommand cmd = new
SqlCommand(query, conn);
16.
17. SqlDataAdapter da = new
SqlDataAdapter(cmd);
18. //es necesario indicar la tabla del
dataset que se quiere cargar
19. da.Fill(empleados, "Empleados");
20.
21. }
22.
23. return empleados;
24. }
25. }

Allí se define la consulta en donde las columnas c oinc iden en


nombre c on los definidos en timepo de diseño en el dataset
tipado, además vale aclarar que la clase ha sido declarada
como internal de forma intencional, para que solo la capa de
Reportes pueda usar esta funcionalidad, es mas la idea es que
se limite al máximo el acc eso a funcionalidad que solo esta
ltuttini.blogspot.com/…/Crystal Reports 4/23
22/05/2011 Leandro Tuttini Blog: Crystal Reports
clase debería utilizar, por eso el dataset tipado también tiene el
modific ador de acc eso asignado a internal.

Un punto adic ional es la c arga de una imagen externa que


representa el logo de la empresa, el mismo no se enc uentra en
la db sino que es un arc hivo, es por eso que luego de c argar el
reporte se observan las líneas:

1. Empleados.EmpresaRow row =
empleado.Empresa.NewEmpresaRow();
2. row.Logo =
ImageHelper.ImageToByteArray(ImageHelper.ObtenerIm
agenLogoEmpresa());
3. empleado.Empresa.Rows.Add(row);

enc argadas justamente de crear una row en al datatable con la


imagen del logo. En este caso se hace uso de la funcionalidad
del Helper de Imágenes creado para tomar la imagen embebida
como rec urso.

Retorno del Reporte

Esta c ada de reportes solo debería ser acc edida por medio de
la c lase Reports con su metodo ObtenerReporteEmpleados()
este devolverá la instancia del reporte con la informac ión
asignada lista para ser mostrada en pantalla, o exportada si es
nec esario.

01. public static class Reports


02. {
03.
04. public static ReporteEmpleados
ObtenerReporteEmpleados()
05. {
06. ReporteEmpleados report = new
ReporteEmpleados();
07.
08. //
ltuttini.blogspot.com/…/Crystal Reports 5/23
22/05/2011 Leandro Tuttini Blog: Crystal Reports
09. // Se obtienen los datos de la lista de
empleados
10. //
11. Empleados empleado =
EmpleadosDAL.ObtenerTodos();
12.
13. //
14. // Se agrega el logo de la empresa a la
informacion del listado
15. //
16. Empleados.EmpresaRow row =
empleado.Empresa.NewEmpresaRow();
17. row.Logo =
ImageHelper.ImageToByteArray(ImageHelp
er.ObtenerImagenLogoEmpresa());
18. empleado.Empresa.Rows.Add(row);
19.
20. //
21. // Se asigna los datos a la instancia del
reporte
22. //
23. report.SetDataSource(empleado);
24.
25. return report;
26. }
27.
28. }

Lanzar el Reporte en al Presentación

El ultimo punto por tratar es como se usara lo anteriormente


explicado desde la presentación.

Por un lado contamos c on un formulario espec ialmente c reado


para desplegar el reporte, el mismo solo c uanta c on el
CrystalReportViewer y recibe por parámetro la instanc ia del
reporte que debe mostrar.

01. public partial class Reporte : Form


02. {
03. private ReportClass _report = null;
04.
05. public Reporte()
06. {
07. InitializeComponent();
08. }
09.
10. public Reporte(ReportClass report)
11. :this()
12. {
13. _report = report;
14. }
15.
16. private void Reporte_Load(object sender,
EventArgs e)
17. {
18. crystalReportViewer1.ReportSource = _report;
19. }
20. }

Se define un nuevo c onstructor del formulario para pasar la


instanc ia del reporte al formulario y es en el Load del mismo que
se asigna al Viewer, para desplegar el reporte en pantalla.

ltuttini.blogspot.com/…/Crystal Reports 6/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

Por otro lado tenemos un botón en la pantalla de


ListaEmpleados, el c ual recupera el reporte, c on los datos
asignados, y se la pasa a la instancia del formulario para que la
muestre en pantalla.

01. private void btnListar_Click(object sender, EventArgs


e)
02. {
03.
04. ReporteEmpleados report =
Reports.ObtenerReporteEmpleados();
05.
06. Reporte frmReporte = new Reporte(report);
07. frmReporte.Show();
08.
09. }

Código de ejemplo

La base de datos utilizada en el ejemplo es la Sql Server


Express 2008 R2, como ver en la solución el mdf esta integrado
al Visual Studio, por lo tanto c on solo tener el sql server
express instado esta debería funciona adjuntándose sola al
servic io.

En la c arpeta “script” del proyecto “DataAcc ess” se encuentra


un arc hivo .sql c on las instruc ciones para c rear la estruc tura de
tablas y datos que se requieren para este articulo.

[C#] [VB.NET]

Publicado por Leandro Tuttini en 21:30 4 comentarios

Etiquetas: C rystal Reports

miércoles 5 de mayo de 2010


Crystal Reports – Parameters – Como
asignarlos desde código .net

Introducción

Un problema frecuente cuando se usa Crystal Reports es el


pasaje de informac ión por medio de parámetros al reporte.

El uso de parámetros es un aspecto importante para la c reación


de reportes, y suele suceder que no es tan intuitiva, ni directa
la forma en como se debe programar esta funcionalidad.
ltuttini.blogspot.com/…/Crystal Reports 7/23
22/05/2011 Leandro
la forma en como se debe programar estaTuttini Blog: Crystal Reports
funcionalidad.
Definición del parámetro en Crystal

En este ejemplo se usara el parámetro como filtro de los datos


del reporte, por lo tanto se c reara en el mismo momento en que
se define la informac ión.

Para esto se usara la opción “DataBase Expert”:

En el c uadro de dialogo que se despliega, se deber c rear una


nueva conexión a la base de datos Access usada en el reporte:

ltuttini.blogspot.com/…/Crystal Reports 8/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

Haciendo uso en este c uadro, no directamente la tabla


mostrada, sino la opción “Add Command”, la cual permitirá
definir una c onsulta personalizada.

Es por eso que desplegara el cuadro:

Y se definirá un parámetro mediante la opc ión de la derec ha.

Solo queda definir la c onsulta, hac iendo uso del parámetro:

ltuttini.blogspot.com/…/Crystal Reports 9/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

Seguramente cuando se ac epte el dialogo, mostrara el mensaje


pidiendo el ingreso de un valor al parámetro creado, se puede
ingresar un valor cualquiera, o simplemente aceptar.

En cualquier momento la c onsulta escrita podrá ser modificada.


ltuttini.blogspot.com/…/Crystal Reports 10/23
22/05/2011 Leandro Tuttini
En cualquier momento la c onsulta escrita podráBlog:
ser Crystal Reports
modificada.

Luego de arrastrar los campos al diseñador del Crystal, podría


visualizarse algo como lo siguiente:

En el “Field Explorer” se puede inspec cionar tanto los campos


de la c onsulta, como los parámetros definidos para el reporte.

Pasaje de parámetros desde código

Al momento de ejec utar la aplicación será nec esario pasarle al


reporte desde el código el filtro que se ha definido, sino se
hac e seguramente el propio Crystal desplegara un cuadro
pidiendo el ingreso de un valor.

En el siguiente código se muestra como llevar a c abo esta


ltuttini.blogspot.com/…/Crystal Reports 11/23
22/05/2011 Leandro Tuttini Blog: Crystal Reports
En el siguiente código se muestra como llevar a c abo esta
operac ión:

01. private void Form1_Load(object sender, EventArgs e)


02. {
03.
04. //
05. // Creo el parametro y asigno el nombre
06. //
07. ParameterField param = new
ParameterField();
08. param.ParameterFieldName = "CargoParam";
09.
10. //
11. // creo el valor que se asignara al
parametro
12. //
13. ParameterDiscreteValue discreteValue = new
ParameterDiscreteValue();
14. discreteValue.Value = "Developer";
15. param.CurrentValues.Add(discreteValue);
16.
17. //
18. // Asigno el paramametro a la coleccion
19. //
20. ParameterFields paramFiels = new
ParameterFields();
21. paramFiels.Add(param);
22.
23. //
24. // Asigno la coleccion de parametros al
Crystal Viewer
25. //
26. crystalReportViewer1.ParameterFieldInfo =
paramFiels;
27.
28. //
29. // Creo la instancia del reporte
30. //
31. crListado report = new crListado();
32.
33. //
34. // Cambio el path de la base de datos
35. //
36. string rutadb =
Path.Combine(Application.StartupPath,
"TestDb.mdb");
37. report.DataSourceConnections[0].SetConnecti
on("", rutadb, false);
38.
39. //
40. // Asigno el reporte a visor
41. //
42. crystalReportViewer1.ReportSource = report;
43.
44. }

[C#] [VB.NET]

ltuttini.blogspot.com/…/Crystal Reports 12/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

[csharp] WinC r… [vb.net] WinC r…

Publicado por Leandro Tuttini en 11:51 17 comentarios

Etiquetas: C rystal Reports

domingo 2 de mayo de 2010


[Crystal Reports] - Exportar DataGridView a
Crystal

Introducción

Comúnmente c uando uno c onfec ciona un reporte la información


que se usara proviene de una tabla o c onsulta a una base de
datos, pero suele suceder que a veces se necesite información
de orígenes distintos, como ser el c aso de controles del propio
formulario, donde el usuario cargado información.

Este el c aso planteado en el artic ulo, c omo generar un reporte


en Crystal Reprots, pero utilizando información que no se
enc uentra en una base de datos, sino que esta aun contenida
en los c ontroles del formulario, no hay una tabla a la cual se
puede vincular el reporte.

Para resolver este problema se hará uso de DataSet Tipados,


los cuales no solo brindaran el esquema nec esario para definir la
estruc tura de datos que usara el reporte, sino que además será
contenedor de los datos que luego se asignaran c omo origen de
datos.

Información Adicional

Como referencia adicional podría menc ionar dos excelente


artíc ulos que han sido de mucha ayuda, los c uales detallan muy
bien como hacer uso de los reportes vinc ulados a DataSet
Tipados, pero en este caso si toman la información mediante
una consulta a la db.

Informes Crystal Reports

Creación de Reportes con Crystal Reports en Visual Studio


2005/2008

Creación del reporte

Uno de los primeros paso consiste en la c reación del reporte,


para el mismo es necesario definir los datos o mejor dicho el
esquema de los mismos, tarea que será responsabilidad del
DataSet Tipado.
ltuttini.blogspot.com/…/Crystal Reports 13/23
22/05/2011 Leandro Tuttini Blog: Crystal Reports

Es por ello que en el ejemplo podrán ver un arc hivo de nombre


dtCompra.xsd, este es prec isamente el DataSet que se usara
en el reporte y definirá la estruc tura de datos del mismo.

En este se han creado manualmente dos DataTable que


representan los datos del c liente y los ítems que ha
selecc ionado en la c ompra.

Ambas tablas se han c reado de forma manual, arrastrando los


datatable de la toolbox de la izquierda, y luego agregando sus
columnas. Al no existir base de dato alguna, es necesario crear
estas de forma manual, no se tiene ayuda del “Solution
Explorer” para arrastrar tablas y crearlas dinámicamente,
justamente porque no existen.

Una vez creado el esquema de los datos se proc ede con el


reporte, para ello se agrega uno nuevo en el proyecto, en este
caso con el nombre de Factura.rpt, y se configuran los datos
mediante la opciones del “Field Explorer”, agregando el origen
de datos, c omo muestra la imagen:

ltuttini.blogspot.com/…/Crystal Reports 14/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

Del c uadro de dialogo siguiente se selecc iona el DataSet creado


en el paso previo:

Por ultimo, el asistente de Crystal permitirá redefinir como se


vinc ulan las tablas, en este caso por representar informac ión a
distinto nivel no existe una relación, pero si se desarrollara
algún reporte del estilo maestro-detalles, podría existir un
vinc ulo entre las tablas.

ltuttini.blogspot.com/…/Crystal Reports 15/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

Una vez concluidos los pasos para configurar el esquema de


datos del reporte, arrastrando los c ampos al reporte, podría
armar un reporte similar a este:

Carga de los datos en el DataSet Tipado

El siguiente paso consiste en volcar la información ingresada


por el usuario en los controles al dataset tipado, creando en
dtComrpas.xsd

Para esto se codific o un método responsable de esta tarea:

01. private dtCompra GenerarFactura()


02. {
03. dtCompra facturacion = new dtCompra();
04.
05. //
06. // Agrego el registro con la info del cliente
07. //
ltuttini.blogspot.com/…/Crystal Reports 16/23
22/05/2011 Leandro Tuttini Blog: Crystal Reports
07. //
08. dtCompra.DatosClienteRow rowDatosCliente =
facturacion.DatosCliente.NewDatosClienteRow();
09. rowDatosCliente.Nombre = txtNombre.Text;
10. rowDatosCliente.Direccion = txtDireccion.Text;
11. rowDatosCliente.Telefono = txtTelefono.Text;
12. rowDatosCliente.DNI = txtDni.Text;
13.
14. facturacion.DatosCliente.AddDatosClienteRow(rowDa
tosCliente);
15.
16. //
17. // Itero por cada fila del DataGridView creando
el registro
18. // en el DataTabla
19. //
20. foreach (DataGridViewRow row in dgvCompras.Rows)
21. {
22. dtCompra.ComprasRow rowCompra =
facturacion.Compras.NewComprasRow();
23. rowCompra.Descripcion =
Convert.ToString(row.Cells["Descripcion"].
Value);
24. rowCompra.PrecioUnitario =
Convert.ToInt32(row.Cells["PrecioUnitario"
].Value);
25. rowCompra.Cantidad =
Convert.ToInt32(row.Cells["Cantidad"].Valu
e);
26.
27. facturacion.Compras.AddComprasRow(rowCompra);
28. }
29.
30.
31. return facturacion;
32. }

Este método es fundamental ya que será el encargado de


cargar los datos en una instancia del dataset tipado, para ello
tomara el contenido de los controles y los agregara como
registros en el DataTable que c orresponda.

Es de apreciar c omo opera con el DataGridView, recorriendo


cada fila del mismo, tomando los valores de sus c eldas y
creando nuevos registros en el datatable que representa las
Compras.

Visualización del Reporte

Una vez que tenemos los datos cargados en una instancia del
DataSet, solo queda asignarlos como origen de datos del
reporte.

Para esta operac ión el reporte será mostrador en un formulario


espec ialmente c reado para tal fin.

Pero hay un detalle, los datos han sido creado en un formulario


distinto, es por eso usa la téc nica por medio del constructor
para pasar la informac ión de un formulario a otro. Esto podrá
visualizarse en el formulario frmVisorFac tura.

01. public partial class frmVisorFactura : Form


02. {
03. dtCompra _datosreporte;
ltuttini.blogspot.com/…/Crystal Reports 17/23
22/05/2011 Leandro Tuttini Blog: Crystal Reports
03. dtCompra _datosreporte;
04.
05. private frmVisorFactura()
06. {
07. InitializeComponent();
08. }
09.
10. public frmVisorFactura(dtCompra datos): this()
11. {
12. _datosreporte = datos;
13. }
14.
15. private void frmVisorFactura_Load(object sender,
EventArgs e)
16. {
17. Factura _factura = new Factura();
18. _factura.SetDataSource(_datosreporte);
19.
20. crwFactura.ReportSource = _factura;
21. }
22. }

Allí se ha agregado un c onstructor que ac epta c omo parámetro


el dataset que requiere el reporte para visualizarse.

También puede verse como en el evento Load se hace uso de


los datos pasados al formulario y c omo son asignados al
DataSource de la instancia del reporte.

Desde el frmCompra (donde el Usuario de la aplicación ingresa


los datos), solo basta con invocar al formulario de la siguiente
manera:

1. private void btnReporte_Click(object sender,


EventArgs e)
2. {
3. dtCompra datos = GenerarFactura();
4.
5. frmVisorFactura frm = new frmVisorFactura(datos);
6. frm.Show();
7. }

En al primer línea se invoca al método que carga la estructura


de datos, y en las siguiente se c rea la instancia del formulario
que contienen el control Crystal Report Viewer, al c ual se le
pasa en el construc tor la informac ión a visualizar.

Hay que remarc ar en este punto el porque de todo esta lógica


en al c omunic ac ión de los formularios. Resulta que uno de ellos
es el que c ontiene la informac ión y el otro es el que permite la
visualización, la idea es mantener bien clara la separac ión de
responsabilidades de cada uno, y no tener que ac ceder desde
un formulario a los c ontroles del otro, eso no es correc to, pero
si se usa un medio que permita la comunicación, como ser en
este c aso el dataset tipado ,se puede trabajar en cada
formulario de forma transparente y prolija.

[C#] [VB.NET]

ltuttini.blogspot.com/…/Crystal Reports 18/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

[csharp]GrillaE… [vb.net]GrillaE…

Publicado por Leandro Tuttini en 16:26 22 comentarios

Etiquetas: C rystal Reports

sábado 12 de dic iembre de 2009


C# – Crystal Reports – Usar DataSet Tipado con
dos DataTable

Introducción

La finalidad de este articulo es muy puntual e intentara


demostrar c omo hac er uso en un reporte de Crystal un DataSet
Tipado que contiene dos DataTable en su interior.

En este caso se nec esita listar los contac tos de una empresa,
pero para ello no solo se debe contar c on los datos de los
contac tos, sino que además se desea enviar en el mismo origen
de datos la informac ión de la empresa.

Para esta operac ión es que se hac e uso de un mismo DataSet


Tipado, pero este contendrá dos tablas, las c uales serán
cargadas de forma independiente, pero todo el conjunto será
enviado c omo DataSourc e al reporte.

Para la operac ión se c arga del dataset es que se ha creado un


método que permite bajo la misma c onexión cargar ambas
tablas

01. public static dtoContactosEmpresa


GetContactosEmpresa()
02. {
03. dtoContactosEmpresa dtContactosEmpresa = new
dtoContactosEmpresa();
04.
05.
06. using (OleDbConnection conn = new
OleDbConnection(ConfigurationManager.Connectio
nStrings["default"].ToString()))
07. {
08.
09. #region Cargo Datos Empresa
10.
11. string sql = @"SELECT IdEmpresa
12. ,RazonSocial
13. ,Telefono
14. ,Direccion
15. ,CUIT
16. FROM Empresas";
17.
ltuttini.blogspot.com/…/Crystal Reports 19/23
22/05/2011 Leandro Tuttini Blog: Crystal Reports
17.
18. OleDbCommand command = new OleDbCommand(sql,
conn);
19.
20. OleDbDataAdapter da = new
OleDbDataAdapter(command);
21.
22. da.Fill(dtContactosEmpresa, "DatosEmpresa");
23.
24. #endregion
25.
26. #region Cargo Contactos
27.
28. sql = @"SELECT Nombre
29. ,Apellido
30. ,FechaNacimiento
31. ,Localidad
32. ,Calle
33. ,Numero
34. ,Mail
35. FROM Contacto";
36.
37.
38. command = new OleDbCommand(sql, conn);
39.
40. da = new OleDbDataAdapter(command);
41.
42. da.Fill(dtContactosEmpresa, "Contactos");
43.
44. #endregion
45.
46. }
47.
48. return dtContactosEmpresa;
49. }

Es importante remarc ar como al hac er el Fill() de los datos se


espec ific a el nombre del datatable donde se quiere volcar la
información (líneas 22 y 42)

[C#] [VB.NET]

[csharp]WinC r… [vb.net]WinC ry…

Publicado por Leandro Tuttini en 08:17 0 comentarios

Etiquetas: C #, C rystal Reports

sábado 3 de octubre de 2009


C# - Crystal Reports – Sumatoria Condicional
(Conditional Sum)
Introduccion

ltuttini.blogspot.com/…/Crystal Reports 20/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports
Cuando se rrqyuiere trabajar c on Crystal en la creadion de
reportes un punto interesante es poder agregar condic iones a
los campos de agregacion, como se una sumatoria al final de la
pagina, para ello tenemos herramientas en Crystal que
utilizaremos en este ejemplo

Desarrollo

Para el ejemplo haremos uso de un ambiente simple en dodne


tendremos una lista de usuarios y sus asistencias a
determinado evento.

Para ello ene le ejemplo se hara uso c omo origen de datos un


DataSet Tipado, el c uals era c argado en este c aso de forma
manual, pero bien podria hacerse acc ediendo a una base de
datos

Como proximo paso se creara el reporte agregando a la seccion


de detalle los c ampos definidos en el DataSet.

Una vez que tenomos el reporte armado, se proc edera a la


creacion del campo de sumatoria, para ello se realzia un click
sobre el campos al cual se le quiere aplicar la suma y se
selecc iona Insert –> Running Total …

En el dialogo que se visualizara se podra cambiar el nombre en


este c aso se utilizo “AsistenciasTotal”, y la parte mas
importante sera definir la formula que usara, para ello se debera
utilizar la opc ion que dice “Use a formula”

Al presionarla se visualizara otro c uadro en donde se introducira


la formua que es requerida en este caso filtraremos por un
nombre, por ejemplo “Carlos”, por sultimo se acepta el c uadro
con el boton superior “Save and c lose”.

ltuttini.blogspot.com/…/Crystal Reports 21/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

Cuando se acepte el ultimo c uadro seguramente los campos


pueden quedar ensimados, pera solucionarlo solo hace falta
moverlos, ubic andolos donde sea requerido.

El reporte final, luego de ubicar c orrec tamente lso campos,


quedara de esta forma:

Y al ejec utarlo el resultado sera el siguiente:

Debe notarse ademas que si se visualiza el “Field Explorer” se


enc ontrara el c ampo de sumatoria recien creado.

ltuttini.blogspot.com/…/Crystal Reports 22/23


22/05/2011 Leandro Tuttini Blog: Crystal Reports

[C#] Descarga

Publicado por Leandro Tuttini en 13:40 5 comentarios

Etiquetas: C rystal Reports

Entradas más recientes Página princ ipal Entradas antiguas

Suscribirse a: Entradas (Atom)

ltuttini.blogspot.com/…/Crystal Reports 23/23

Вам также может понравиться