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

Programando con C#

Ing. Javier Alberto Manrique Quionez 1


Programando con C#

ENTIDAD PRODUCTO CON ARCHIVOS BINARIOS


Formulario Sistema de Man

Formulario Producto

Ing. Javier Alberto Manrique Quionez 2


Programando con C#

Producto.cs
namespace ProyectoProducto
{ public class Producto
{ public int idProducto { get; set; }
public string nombreDelProducto { get; set; }
public int idMarca { get; set; }
public int stockMinimo { get; set; }
public int stock { get; set; }
public double precioDeCompra { get; set; }
public double precioDeVenta { get; set; }
public string fechaDeAlta { get; set; }

public Producto()
{ idProducto = 0;
nombreDelProducto = "";
stockMinimo = 0;
stock = 0;
precioDeCompra = 0;
precioDeVenta = 0;
fechaDeAlta = "";
}

public Producto(int idProducto)


{ this.idProducto = idProducto;
}

public Producto( int idProducto,


string nombreDelProducto,
int idMarca,
int stockMinimo,
int stock,
double precioDeCompra,
double precioDeVenta,
string fechaDeAlta
)
{ this.idProducto = idProducto;
this.nombreDelProducto = nombreDelProducto;
this.idMarca = idMarca;
this.stockMinimo = stockMinimo;
this.stock = stock;
this.precioDeCompra = precioDeCompra;
this.precioDeVenta = precioDeVenta;
this.fechaDeAlta = fechaDeAlta;
}

public override string ToString()


{ return nombreDelProducto;
}
}
}

Ing. Javier Alberto Manrique Quionez 3


Programando con C#

ProductoDAO.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace ProyectoProducto
{
public class ProductoDAO
{ public static Boolean insertarRegistro(Producto oProducto)
{
int posicion = numeroDeRegistros();
if (escribirRegistro(oProducto, posicion))
{
return true;
}
else
{
return false;
}
}

public static Producto consultarRegistro(Producto oProducto )


{
int posicion = buscarRegistro(oProducto.idProducto);
if (posicion != -99)
{
oProducto = leerRegistro(oProducto, posicion);
return oProducto;
}
else
{
return null;
}
}

public static Boolean modificarRegistro(Producto oProducto)


{ int posicion = buscarRegistro(oProducto.idProducto);
if (posicion != -99)
{ if (escribirRegistro(oProducto, posicion))
{ return true;
}
else
{ return false;
}
}
else
{ return false;
}
}

public static Boolean eliminarRegistro(Producto oProducto)


{ int posicion = buscarRegistro(oProducto.idProducto);
if (posicion != -99)
{ oProducto = leerRegistro(oProducto, posicion);
oProducto.idProducto = 0;
if (escribirRegistro(oProducto, posicion))
{ return true;
}
else
{ return false;
}
}

Ing. Javier Alberto Manrique Quionez 4


Programando con C#

else
{ return false;
}
}

public static int buscarRegistro(int busqueda)


{ Producto oProducto = new Producto();
int encontrado = 0; int posicion = 0;
while (posicion < numeroDeRegistros() && (encontrado == 0))
{ oProducto = leerRegistro(oProducto, posicion);
if (busqueda == oProducto.idProducto)
{ encontrado = 1;
}
else
{ posicion = posicion + 1;
}
}
if (encontrado == 1)
{ return posicion;
}
else
{ return -99;
}
}

public static List<Producto> obtenerDatosEnList()


{ Producto oProducto = new Producto();
List<Producto> oListProducto = new List<Producto>();
for (int posicion = 0; posicion < numeroDeRegistros(); posicion = posicion + 1)
{ oProducto = leerRegistro(oProducto, posicion);
if (oProducto.idProducto != 0)
{ oListProducto.Add(oProducto);
}
}
return oListProducto;
}

public static Producto leerRegistro(Producto oProducto, int posicion)


{
string archivo = Properties.Settings.Default.nombreDeArchivoProducto;
int longitudDeRegistro = Properties.Settings.Default.longitudDeRegistroProducto;
FileStream oFileStream = new FileStream(archivo, FileMode.Open, FileAccess.Read);
BinaryReader oBinaryReader = new BinaryReader(oFileStream);
oBinaryReader.BaseStream.Seek(posicion * longitudDeRegistro, SeekOrigin.Begin);
oProducto = new Producto(oBinaryReader.ReadInt32(),
oBinaryReader.ReadString(),
oBinaryReader.ReadInt32(),
oBinaryReader.ReadInt32(),
oBinaryReader.ReadInt32(),
oBinaryReader.ReadDouble(),
oBinaryReader.ReadDouble(),
oBinaryReader.ReadString()
);
oBinaryReader.Close();
oFileStream.Close();
return oProducto;
}

Ing. Javier Alberto Manrique Quionez 5


Programando con C#

public static Boolean escribirRegistro(Producto oProducto, int posicion)


{ try
{ String archivo = Properties.Settings.Default.nombreDeArchivoProducto;
int longitudDeRegistro = Properties.Settings.Default.longitudDeRegistroProducto;

FileStream oFileStream = new FileStream(archivo, FileMode.OpenOrCreate,


FileAccess.ReadWrite);
BinaryWriter oBinaryWriter = new BinaryWriter(oFileStream);

oBinaryWriter.BaseStream.Seek(posicion * longitudDeRegistro, SeekOrigin.Begin);

oBinaryWriter.Write(oProducto.idProducto);
oBinaryWriter.Write(oProducto.nombreDelProducto);
oBinaryWriter.Write(oProducto.idMarca);
oBinaryWriter.Write(oProducto.stockMinimo);
oBinaryWriter.Write(oProducto.stock);
oBinaryWriter.Write(oProducto.precioDeCompra);
oBinaryWriter.Write(oProducto.precioDeVenta);
oBinaryWriter.Write(oProducto.fechaDeAlta);
oBinaryWriter.Close();
oFileStream.Close();
return true;
}
catch (Exception e)
{
MessageBox.Show("No se pudo grabar el registro ... error de tipo " + e);
return false;
}
}

public static int numeroDeRegistros()


{ string nombreDelArchivo = Properties.Settings.Default.nombreDeArchivoProducto;
int longitudDeRegistro = Properties.Settings.Default.longitudDeRegistroProducto;
FileStream oFileStream = new FileStream(nombreDelArchivo, FileMode.OpenOrCreate,
FileAccess.Read);
int numeroDeRegistros =
(int)(Math.Ceiling((double) oFileStream.Length / (double)longitudDeRegistro));
oFileStream.Close();
return numeroDeRegistros;
}
}
}

Ing. Javier Alberto Manrique Quionez 6


Programando con C#

FormularioInsertarProducto.cs
using System;
using System.Windows.Forms;
namespace ProyectoProducto
{public partial class FormularioInsertarProducto : Form
{public FormularioInsertarProducto()
{ InitializeComponent();
limpiarCuadrosDeTexto();
textBoxIdProducto.Enabled = true;
activaDesactivaCuadrosDeTexto(false);
activaDesactivaBotonesDeComando(true, false, true);
textBoxIdProducto.Focus();
}

public void limpiarCuadrosDeTexto()


{ textBoxNombreDelProducto.Text = "";
textBoxIdMarca.Text = "";
textBoxStockMinimo.Text = "";
textBoxStock.Text = "";
textBoxPrecioDeCompra.Text = "";
textBoxPrecioDeVenta.Text = "";
dateTimePickerFechaDeAlta.Text = "";
}

public void ponerProducto(Producto oProducto)


{ textBoxIdProducto.Text = oProducto.idProducto + "";
textBoxNombreDelProducto.Text = oProducto.nombreDelProducto;
textBoxIdMarca.Text = oProducto.idMarca+"";
textBoxStockMinimo.Text = oProducto.stockMinimo + "";
textBoxStock.Text = oProducto.stock + "";
textBoxPrecioDeCompra.Text = oProducto.precioDeCompra + "";
textBoxPrecioDeVenta.Text = oProducto.precioDeVenta + "";
dateTimePickerFechaDeAlta.Text = oProducto.fechaDeAlta;
}

public Producto recuperarProducto(Producto oProducto)


{ oProducto.idProducto = int.Parse(textBoxIdProducto.Text);
oProducto.nombreDelProducto = textBoxNombreDelProducto.Text;
oProducto.idMarca = int.Parse(textBoxIdMarca.Text);
oProducto.stockMinimo = int.Parse(textBoxStockMinimo.Text);
oProducto.stock = int.Parse(textBoxStock.Text);
oProducto.precioDeCompra = double.Parse(textBoxPrecioDeCompra.Text);
oProducto.precioDeVenta = double.Parse(textBoxPrecioDeVenta.Text);
oProducto.fechaDeAlta = dateTimePickerFechaDeAlta.Text;
return oProducto;
}

public void activaDesactivaCuadrosDeTexto(bool activaDesactiva)


{ textBoxNombreDelProducto.Enabled = activaDesactiva;
textBoxIdMarca.Enabled = activaDesactiva;
textBoxStockMinimo.Enabled = activaDesactiva;
textBoxStock.Enabled = activaDesactiva;
textBoxPrecioDeCompra.Enabled = activaDesactiva;
textBoxPrecioDeVenta.Enabled = activaDesactiva;
dateTimePickerFechaDeAlta.Enabled = activaDesactiva;

Ing. Javier Alberto Manrique Quionez 7


Programando con C#

private void activaDesactivaBotonesDeComando( bool activaDesactivaBuscar,


bool activaDesactivaInsertar,
bool activaDesactivaSalir)
{ buttonBuscar.Enabled = activaDesactivaBuscar;
buttonInsertar.Enabled = activaDesactivaInsertar;
buttonSalir.Enabled = activaDesactivaSalir;
}

private void buttonInsertar_Click(object sender, EventArgs e)


{ Producto oProducto = new Producto();
oProducto = recuperarProducto(oProducto);
if (MessageBox.Show("Desea insertarlo?", "Confirme el guardado",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{ if (ProductoDAO.insertarRegistro(oProducto))
{ MessageBox.Show("Operacin exitosa ... !!!");
limpiarCuadrosDeTexto();
textBoxIdProducto.Text = "";
textBoxIdProducto.Enabled = true;
activaDesactivaCuadrosDeTexto(false);
activaDesactivaBotonesDeComando(true, false, true);
textBoxIdProducto.Focus();
}
else
{ MessageBox.Show("No se pudo guardar el registro ... !!!");
}
}
}

private void buttonBuscar_Click(object sender, EventArgs e)


{ Producto oProducto = new Producto();
oProducto.idProducto = int.Parse(textBoxIdProducto.Text);
oProducto = ProductoDAO.consultarRegistro(oProducto);
if (oProducto == null)
{ limpiarCuadrosDeTexto();
textBoxIdProducto.Enabled = false;
activaDesactivaCuadrosDeTexto(true);
activaDesactivaBotonesDeComando(false, true, true);
textBoxNombreDelProducto.Focus();
}
else
{ MessageBox.Show("Producto encontrado !!!");
textBoxIdProducto.Text = "";
activaDesactivaBotonesDeComando(true, false, true);
textBoxIdProducto.Focus();
}
}

private void buttonSalir_Click(object sender, EventArgs e)


{ Dispose();
}
private void textBoxIdProducto_KeyPress(object sender, KeyPressEventArgs e)
{if (e.KeyChar == Convert.ToChar(Keys.Enter))
{ int numero = 0;
if (int.TryParse(textBoxIdProducto.Text, out numero) != true)
{ MessageBox.Show("Error de entrada de datos");
textBoxIdProducto.Text = "";
textBoxIdProducto.Focus();
}
else
{ buttonBuscar.Focus();
}
}
}

Ing. Javier Alberto Manrique Quionez 8


Programando con C#

private void textBoxNombreDelProducto_KeyPress(object sender, KeyPressEventArgs e)


{ if (e.KeyChar == Convert.ToChar(Keys.Enter))
{ if (textBoxNombreDelProducto.Text.Trim().Length == 0)
{ MessageBox.Show("Error de entrada de datos");
textBoxNombreDelProducto.Text = "";
textBoxNombreDelProducto.Focus();
}
else
{ textBoxIdMarca.Focus();
}
}
}

private void textBoxIdMarca_KeyPress(object sender, KeyPressEventArgs e)


{ if (e.KeyChar == Convert.ToChar(Keys.Enter))
{ int numero = 0;
if (int.TryParse(textBoxIdMarca.Text, out numero) != true)
{ MessageBox.Show("Error de entrada de datos");
textBoxIdMarca.Text = "";
textBoxIdMarca.Focus();
}
else
{ textBoxStockMinimo.Focus();
}
}
}
private void textBoxStockMinimo_KeyPress(object sender, KeyPressEventArgs e)
{ if (e.KeyChar == Convert.ToChar(Keys.Enter))
{ int numero = 0;
if (int.TryParse(textBoxStockMinimo.Text, out numero) != true)
{ MessageBox.Show("Error de entrada de datos");
textBoxStockMinimo.Text = "";
textBoxStockMinimo.Focus();
}
else
{ textBoxStock.Focus();
}
}
}

private void textBoxStock_KeyPress(object sender, KeyPressEventArgs e)


{ if (e.KeyChar == Convert.ToChar(Keys.Enter))
{ int numero = 0;
if (int.TryParse(textBoxStock.Text, out numero) != true)
{ MessageBox.Show("Error de entrada de datos");
textBoxStock.Text = "";
textBoxStock.Focus();
}
else
{ textBoxPrecioDeCompra.Focus();
}
}
}

private void textBoxPrecioDeCompra_KeyPress(object sender, KeyPressEventArgs e)


{ if (e.KeyChar == Convert.ToChar(Keys.Enter))
{int numero = 0;
if (int.TryParse(textBoxPrecioDeCompra.Text, out numero) != true)
{ MessageBox.Show("Error de entrada de datos");
textBoxPrecioDeCompra.Text = "";
textBoxPrecioDeCompra.Focus();
}

Ing. Javier Alberto Manrique Quionez 9


Programando con C#

else
{
textBoxPrecioDeVenta.Focus();
}
}
}

private void textBoxPrecioDeVenta_KeyPress(object sender, KeyPressEventArgs e)


{
if (e.KeyChar == Convert.ToChar(Keys.Enter))
{ int numero = 0;
if (int.TryParse(textBoxPrecioDeVenta.Text, out numero) != true)
{
MessageBox.Show("Error de entrada de datos");
textBoxPrecioDeVenta.Text = "";
textBoxPrecioDeVenta.Focus();
}
else
{
dateTimePickerFechaDeAlta.Focus();
}
}
}

private void textBoxFechaDeAlta_KeyPress(object sender, KeyPressEventArgs e)


{ if (e.KeyChar == Convert.ToChar(Keys.Enter))
{if (textBoxNombreDelProducto.Text.Trim().Length == 0)
{ MessageBox.Show("Error de entrada de datos");
dateTimePickerFechaDeAlta.Text = "";
dateTimePickerFechaDeAlta.Focus();
}
else
{ buttonInsertar.Focus();
}
}
}

private void FormularioInsertarProducto_FormClosing(object sender, FormClosingEventArgs e)


{
DialogResult dialogo = MessageBox.Show("Desea cerrar el formulario?", "Cuidado",
MessageBoxButtons.YesNo);
if (dialogo == DialogResult.No)
{ e.Cancel = true;
}
else
{
if (dialogo == DialogResult.No)
{ e.Cancel = false;
}
}
}
}
}

Ing. Javier Alberto Manrique Quionez 10


Programando con C#

Ing. Javier Alberto Manrique Quionez 11


Programando con C#

Ing. Javier Alberto Manrique Quionez 12


Programando con C#

Ing. Javier Alberto Manrique Quionez 13


Programando con C#

Ing. Javier Alberto Manrique Quionez 14


Programando con C#

Tipos MessageBox

MessageBoxButtons.OK
MessageBoxButtons.AbortRetryIgnore

MessageBoxButtons.OKCancel MessageBoxButtons.RetryCancel

MessageBoxButtons.YesNo MessageBoxButtons.YesNoCancel

Tipos de BoxIcons

MessageBoxIcon.Error MessageBoxIcon.Exclamation MessageBoxIcon.Information

MessageBoxIcon.None MessageBoxIcon.Question

Ing. Javier Alberto Manrique Quionez 15


Programando con C#

Formulario Sistema de Men

CDIGO DEL FORMULARIO FORMULARIOSISTEMADEMENU


using System;
using System.Windows.Forms;
namespace ProyectoProducto
{ public partial class FormularioSistemaDeMenu : Form
{ public FormularioSistemaDeMenu()
{ InitializeComponent();
}
private void listarProductoToolStripMenuItem_Click(object sender, EventArgs e)
{ FormularioListadoDeProducto oFormularioListadoDeProducto =
new FormularioListadoDeProducto();
oFormularioListadoDeProducto.Show();
}
private void insertarProductoToolStripMenuItem_Click(object sender, EventArgs e)
{ FormularioInsertarProducto oFormularioInsertarProducto =
new FormularioInsertarProducto();
oFormularioInsertarProducto.ShowDialog();
}
private void reportarProductoToolStripMenuItem_Click(object sender, EventArgs e)
{ FormularioReporteDeProducto oFormularioReporteDeProducto = new FormularioReporteDeProducto();
oFormularioReporteDeProducto.Show();
}
private void toolStripButtonInsertarProducto_Click(object sender, EventArgs e)
{ FormularioInsertarProducto oFormularioInsertarProducto =
new FormularioInsertarProducto();
oFormularioInsertarProducto.ShowDialog();
}
}
}

Ing. Javier Alberto Manrique Quionez 16


Programando con C#

Formulario FormularioListadoDeProducto

using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace ProyectoProducto
{
public partial class FormularioListadoDeProducto : Form
{
public FormularioListadoDeProducto()
{
InitializeComponent();
dataGridViewProducto.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}

private void buttonListarProducto_Click(object sender, EventArgs e)


{
List<Producto> oListProducto = new List<Producto>();

oListProducto = ProductoDAO.obtenerDatosEnList();

for (int i = 0; i < oListProducto.Count;i=i+1 )


{
dataGridViewProducto.Rows.Add( oListProducto[i].idProducto,
oListProducto[i],
oListProducto[i].idMarca,
oListProducto[i].stockMinimo,
oListProducto[i].stock,
oListProducto[i].precioDeCompra,
oListProducto[i].precioDeVenta,
oListProducto[i].fechaDeAlta
);
}
}
}
}

Ing. Javier Alberto Manrique Quionez 17


Programando con C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace ProyectoProducto
{
public class ProductoDAO
{
...
public static List<Producto> obtenerDatosEnList()
{ Producto oProducto = new Producto();

List<Producto> oListProducto = new List<Producto>();

for (int posicion = 0; posicion < numeroDeRegistros(); posicion = posicion + 1)


{ oProducto = leerRegistro(oProducto, posicion);
if (oProducto.idProducto != 0)
{ oListProducto.Add(oProducto);
}
}
return oListProducto;
}
...
}
}

Ing. Javier Alberto Manrique Quionez 18


Programando con C#

ARCHIVOS DE DATOS Y REPORTES CON CRYSTAL REPORT


Crystal Reports es una aplicacin de inteligencia empresarial utilizada para disear y generar informes desde una
amplia gama de fuentes de datos (archivo de datos y bases de datos). Varias aplicaciones, como Microsoft Visual
Studio, incluyen una versin OEM de Crystal Report como una herramienta de propsito general para
informes/reportes. Crystal Reports se convirti en el escritor de informes estndar cuando Microsoft lo liber
con Visual Basic.
Para el desarrollo de ejemplo se utilizar la aplicacin desarrollada en el Captuo 3 - Sistema de mantenimiento
ABCM de alumnos por lo que no se la describir en forma repetida. Se debe construir sistema de men principal
(FormSistemaDeMenu) con las opciones Alumno y Salir. La Figura 6.1 y la Figura 6.2 muestra el Formulario que
contiene el sistema de men principal con las opciones Formulario ABCM y Reportar alumno. El cdigo del
Formulario FormularioSistemaDeMenu se visualiza en la Figura 6.3.

Figura 6.1: Sistema de Men Principal Opcin Insertar alumno

Figura 6.2: Sistema de Men Principal Opcin Reporte de alumnos

Ing. Javier Alberto Manrique Quionez 19


Programando con C#

Figura 6.3: Cdigo del Formulario Sistema de Men

La Figura 6.4 muestra la aplicacin en el Explorador de aplicaciones.

Figura 6.4: Aplicacin en el explorador de soluciones

Ing. Javier Alberto Manrique Quionez 20


Programando con C#

La Figura 6.5 muestra la configuracin de proyecto, la cual tiene que ser personalizada utilizando como versin de
.NET Framework destino el .NET Framework 4

Para crear el DataSetAlumno (Conjunto de datos alumno) se debe seguir el siguiente procedimiento:

Hacer clic derecho en el proyecto ProyectoABCMyDAO y seleccionar Agregar- NuevoElemento. En la Figura 6.5
nuestra lo indicado.

Figura 6.5: Agregar nuevo elemento

Ing. Javier Alberto Manrique Quionez 21


Programando con C#

Seleccione Datos Conjunto de datos. Escriba DataSetAlumno como nombre del Conjunto de datos. En la Figura
6.6 nuestra lo indicado.

Figura 6.6: Seleccin de datos Conjunto de datos

Verifique que se muestra el diseador de DataSet. La Figura 6.7 muestra el diseador de DataSet.

Figura 6.7: Diseador de DataSet

Ing. Javier Alberto Manrique Quionez 22


Programando con C#

En el rea de diseo de DataSet haga clic derecho y seleccione del men conceptual Agregar Tabla de datos. En
la Figura 6.8 nuestra lo indicado.

Figura 6.8: Seleccin Agregar Tabla de datos

Haga doble clic en el nombre de la tabla de datos (dateTable1) y cambie el nombre por el de DataTableAlumno.
Luego en el rea de diseo de DataSet seleccione el DataTableAlumno y haga clic derecho y seleccione del men
conceptual Agregar Columna. En la Figura 6.9 nuestra lo indicado.

Figura 6.9: Seleccin Agregar Columna

Ing. Javier Alberto Manrique Quionez 23


Programando con C#

Verifique que el diseador de DataSet se visualice como en la Figura 6.10, en la cual se se observa que se ha
creado un DataTable llamado DataTableAlumno con una columna DataColumnIdAlumno.

Figura 6.10: DataTableAlumno

Repetir el proceso anterior y agregar las siguientes columnas tal como se visualice como en la Figura 6.11.

Figura 6.11: DataTableAlumno

Ing. Javier Alberto Manrique Quionez 24


Programando con C#

Para crear un reporte utilizando Crystal report se debe seguir el siguiente procedimiento:

Hacer clic derecho en el proyecto ABCMyDAO y seleccionar Agregar- NuevoElemento. En la Figura 6.12 nuestra lo
indicado.

Figura 6.12: Agregar nuevo elemento

Seleccione Reporting Crystal Reports. Escriba CrystalReporte como nombre del Reporte. En la Figura 6.13
nuestra lo indicado.

Figura 6.13: Seleccin Reporting Crystal Reports

Ing. Javier Alberto Manrique Quionez 25


Programando con C#

Seleccione Estndar y haga clic en el botn de comando Aceptar. En la Figura 6.14 nuestra lo indicado.

Figura 6.14: Seleccin Estndar Botn de comando Aceptar

Seleccione en datos del proyecto ADO.NET DataSets - ABCMyDAO.DataSetAlumno - DataTable1. Luego haga clic

en el botn de comando . En la Figura 6.15 nuestra lo indicado.

Figura 6.15: Datos del proyecto ADO.NET DataSets-ABCMyDAO.DataSetAlumnoDataTable1

Ing. Javier Alberto Manrique Quionez 26


Programando con C#

Verifique que la ventana del asistente para la creacin de informes estndar se visualice como en la Figura 6.16.
Luego haga clic en el botn de comando siguiente.

Figura 6.16: Asistente para la creacin de informes estndar

Seleccione todos los campos del DataTable1 haciendo clic en el botn de comando . La Figura 6.17.
muestra el asistente en la seleccin de campos a mostrar.

Figura 6.17: Seleccin de campos a mostrar

Ing. Javier Alberto Manrique Quionez 27


Programando con C#

Verifique que la ventana del asistente para la creacin de informes estndar se visualice como en la Figura 6.18.
Luego haga clic en el botn de comando Finalizar.

Figura 6.18: Asistente para la creacin de informes estndar

Verifique que la ventana del reporte se visualice como en la Figura 6.19.

Figura 6.19: Ventana de reporte

Para crear un formulario para desplegar el reporte se debe seguir el siguiente procedimiento:

Ing. Javier Alberto Manrique Quionez 28


Programando con C#

Hacer clic derecho en el proyecto ABCMyDAO y seleccionar Agregar- NuevoElemento. En la Figura 6.20 nuestra lo
indicado.

Figura 6.20: Agregar nuevo elemento

Seleccione Windows Forms Windows Forms. Escriba FormularioReportarAlumno como nombre del Formulario.
En la Figura 6.21 nuestra lo indicado.

Figura 6.21: Seleccin Windows Forms- Windows Forms

Ing. Javier Alberto Manrique Quionez 29


Programando con C#

Del cuadro de herramientas arrastre el control CrystalReportViewer. En la Figura 6.22 nuestra lo indicado.

Figura 6.22: Seleccin de control CrystalReportViewer al FormularioReporte

Verifique que el FormularioReporte se visualice como en la Figura 6.23. y el icono sealado por la fecha. Este
icono activa el men conceptual Tareas del CrystalReportViewer

Figura 6.23: Ventana FormularioReportarAlumno

Ing. Javier Alberto Manrique Quionez 30


Programando con C#

Del men conceptual Tareas del CrystalReportViewer seleccione Elegir un informe en Crystal tal como se
presenta en la Figura 6.24.

Figura 6.24 Men conceptual tareas de CrystaReportViewer

En elegir un informe de Crystal cristalReportViewer1 seleccione Crystalreport1.rpt tal como se presenta en la


Figura 6.25.

Figura 6.25: Men conceptual tareas de CrystalreportViewer con seleccin de reporte

Ing. Javier Alberto Manrique Quionez 31


Programando con C#

Verifique que el FormularioReporte.cs se presente como en la Figura 6.26. Luego haga doble clic en el ttulo de la
ventana.
Figura 6.26: Ventana FormularioReportarAlumno

Ingrese el cdigo del evento Load del FormularioReportarAlumno en el el cual se presenta en la Figura 6.27.

Figura 6.27: Cdigo del FormularioReportarAlumno

Ing. Javier Alberto Manrique Quionez 32


Programando con C#

Haga docle clic en el objeto app.config del Explorador de soluciones. En la Figura 6.28. se visualiza el objeto
app.Config.
Figura 6.28: Objeto app.Config en el explorador de soluciones

Agregue el siguiente cdigo en el objeto app.config. En la Figura 6.29. el cdigo a agregarse en el objeto
app.Config.
Figura 6.29: Cdigo a agregar en el Objeto app.Config

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

Ejecute el proyecto y verifique que el reporte se visualice como en la Figura 6.30.

Figura 6.30: Ejecucin del reporte

Ing. Javier Alberto Manrique Quionez 33

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