InicioHazlo Tu MismoCreación de un sistema de almacén con C# (Parte 4)

Creación de un sistema de almacén con C# (Parte 4)

Hazlo Tu Mismo7/11/2011
Reporte de entradas

Diseño de la pantalla

Para comenzar, le daremos diseño al formulario "frmEntradasLista" el cual nos servirá para mostrar un listado de las entradas que se hayan registrado, la apariencia debe de quedar mas o menos así:
Creación de un sistema de almacén con C# (Parte 4)


Se agregaron tres Button, un ListView y un Label, las propiedades están descritas en la siguiente tabla:
Programacion

Ahora procedemos con el diseño del reporte de entradas, lo primero que haremos será crear un DataSet el cual nos servirá para el posterior diseño del reporte.

Agregamos un nuevo objeto del tipo DataSet (en la carpeta <b>Reportes</b> y le asignamos el nombre <b>dsRptEntrada</b> como se muestra:
sistema de almacen


Le damos diseño para que quede como se muestra:

tyrodeveloper
El DataSet aparece vacío, debemos agregar un DataTable y darle el diseño para que quede como se muestra en la imagen. De entre las propiedades que debemos destacar es que el tipo de datos de los campos <b>cantidad, precio_compra e iva</b> son System.Double. Los tipos de datos para los campos <b>id_articulo y articulo</b> son System.String.

Una vez terminado el diseño del DataSet agregamos un Reporte (en la carpeta <b>Reportes</b>, pero utilizaremos un asistente, aqui muestro con imagenes todo el proceso:
sistemas c#

Selecionamos que nuestro origen de datos es un objeto:
reportes con c#

En la siguiente ventana, expanda todo y ubique el DataSet que acaba de crear anteriormente, como se muestra a continuación:
Creación de un sistema de almacén con C# (Parte 4)

Luego, escriba un nombre para el DataSet (propiedad <b>Name</b>, se recomienda poner el mismo que puso anteriormente:
Programacion

Arrastre los campos que desea mostrar en el reporte a la sección <b>Values</b> como se muestra en la imagen:
sistema de almacen

Desactive la operación <b>Sum</b>:
tyrodeveloper

Seleccione un formato (apariencia):
sistemas c#

Elija a su gusto:
reportes con c#

Agregue el encabezado y el pié del reporte:
Creación de un sistema de almacén con C# (Parte 4)

Agregue los parametros <b>prmFechaEntrada, prmFechaFactura, prmFolioFactura y prmProveedor</b>
Programacion

Ejemplo de como agregar un parametro (Repitalo con los demás):
sistema de almacen

Agregue cuatro TextBox al encabezado y organicelos ordenadamente:
tyrodeveloper

Arrastre los parametros creados enfrente de los TextBox:
sistemas c#

Agrege una columna al reporte:
reportes con c#

Puede darle diseño al reporte, hagalo a su gusto, aqui se muestra algo muy básico:
Creación de un sistema de almacén con C# (Parte 4)

Agregaremos una función para calcular el total:
Programacion

En seguida se muestra como hacerla:
sistema de almacen

Agregaremos un nuevo formulario llamado <b>frmVerReporte</b> al cual agregaremos un control ReportViewer al
cual estableceremos una propiedad <b>Modifiers=Public</b> (En la ventana de propiedades), aqui se muestra una imagen:
tyrodeveloper

Hasta aqui todo ha sido diseño, ahora escribiremos el código que hace todo posible:

Declaramos las siguientes variables (En el formulario frmEntradasLista):

string CnnStr = @" Provider=Microsoft.Jet.OLEDB.4.0; " +
"Data Source=almacen.mdb; " + //<==Poner aqui la ruta de la base de datos
"Jet OLEDB : Database Password=; Persist Security Info=False;"; //<==Ojo, no lleva espacios, sin espacios se ve: OLEDBatabase
string reportFile = @"rptEntrada.rdlc";//<==Poner aqui la ruta del reporte


Ahora agregamos los siguientes procedimientos:

void generaColumnas()
{
lvEntradas.Clear();
lvEntradas.View = View.Details;
lvEntradas.Columns.Add("Folio ", 40, HorizontalAlignment.Left);
lvEntradas.Columns.Add("Fecha Entrada", 85, HorizontalAlignment.Left);
lvEntradas.Columns.Add("Fecha Factura", 85, HorizontalAlignment.Left);
lvEntradas.Columns.Add("Folio Factura", 85, HorizontalAlignment.Left);
lvEntradas.Columns.Add("Proveedor", 200, HorizontalAlignment.Left);
}
void mostrarEntradas() {
try {
OleDbConnection cnn = new OleDbConnection(CnnStr);
cnn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cnn;
cmd.CommandText = "select * from entradas";
OleDbDataReader dr = cmd.ExecuteReader();
int i = 0;
lvEntradas.Items.Clear();
while (dr.Read()) {
//mostramos los datos
lvEntradas.Items.Add(dr["id_entrada"].ToString());
lvEntradas.Items.SubItems.Add(String.Format("{0:dd/MM/yyyy}",dr["fecha_entrada"]));
lvEntradas.Items.SubItems.Add(String.Format("{0:dd/MM/yyyy}", dr["fecha_factura"]));
lvEntradas.Items.SubItems.Add(dr["folio_factura"].ToString());
lvEntradas.Items.SubItems.Add(dr["proveedor"].ToString());
i++;
}
dr.Close();
cnn.Close();
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
void mostrarReporte(int prmIdEntrada)
{
try
{

if (!File.Exists(reportFile))
{
MessageBox.Show(String.Format("No se encuentra n{0}nRevise por favor", reportFile));
return;
}
//AHORA MOSTRAMOS EL REPORTE
OleDbConnection cnn = new OleDbConnection(CnnStr);
cnn.Open();
DataSet dsReporte = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter("select d.*,a.articulo "+
" from entradas_detalle d,articulos a "+
" where a.id_articulo=d.id_articulo and id_entrada="+ prmIdEntrada +"", cnn);
da.Fill(dsReporte, "rptentrada" ) ;
if (dsReporte.Tables["rptEntrada"].Rows.Count == 0)
{
cnn.Close();
MessageBox.Show("No hay Datos" ) ;
return;
}

Formularios.frmVerReporte frm = new Formularios.frmVerReporte();
frm.reportViewer1.LocalReport.DataSources.Clear();
frm.reportViewer1.LocalReport.Dispose();
frm.reportViewer1.Reset();
frm.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("dsRptEntrada",
dsReporte.Tables["rptEntrada"]));
frm.reportViewer1.LocalReport.ReportPath = reportFile;
//parametros
List<ReportParameter> param = new List<ReportParameter>();
OleDbCommand cmd = new OleDbCommand("select * from entradas where id_entrada=" + prmIdEntrada + "", cnn);
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
//folio_factura
ReportParameter pFolioFactura = new ReportParameter();
pFolioFactura.Name = "prmFolioFactura";
pFolioFactura.Values.Add(dr["folio_factura"].ToString());
param.Add(pFolioFactura);
//fecha_entrada
ReportParameter pFechaEntrada = new ReportParameter();
pFechaEntrada.Name = "prmFechaEntrada";
pFechaEntrada.Values.Add(dr["fecha_entrada"].ToString());
param.Add(pFechaEntrada);
//fecha_factura
ReportParameter pFechaFactura = new ReportParameter();
pFechaFactura.Name = "prmFechaFactura";
pFechaFactura.Values.Add(dr["fecha_factura"].ToString());
param.Add(pFechaFactura);
//proveedor
ReportParameter pProveedor = new ReportParameter();
pProveedor.Name = "prmProveedor";
pProveedor.Values.Add(dr["proveedor"].ToString());
param.Add(pProveedor);


}
dr.Close();
//agregamos los parametros a la coleccion
frm.reportViewer1.LocalReport.SetParameters(param);
frm.reportViewer1.RefreshReport();
frm.ShowDialog();
cnn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error loading report",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}

Agregamos sl siguiente código en el <b>Form_Load</b>:

lvEntradas.DoubleClick += new EventHandler(lvEntradas_DoubleClick);
generaColumnas();
mostrarEntradas();

Luego, agregamos el siguiente código:

void lvEntradas_DoubleClick(object sender, EventArgs e)
{
if (lvEntradas.SelectedItems.Count != 0) {
int _FolioEntrada = Convert.ToInt32(lvEntradas.SelectedItems[0].Text ) ;
mostrarReporte(_FolioEntrada);
}
}

El código para el botón <b>btnNueva</b>:
frmEntrada entrada = new frmEntrada();
entrada.StartPosition = FormStartPosition.CenterScreen;
entrada.ShowDialog();


El código para el botón <b>btnMostrar</b>:

mostrarEntradas();

El código para el botón <b>btnSalir</b>:
this.Close();

Aqui un ejemplo de la pantalla funcionando:
sistemas c#

Aqui un ejemplo del reporte:
reportes con c#

Continuar con el siguiente post...


Visita mi Blog:


Creación de un sistema de almacén con C# (Parte 4)

Si deseas que te haga un trabajo de programación:
Datos archivados del Taringa! original
0puntos
4,940visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

j
jgcastle🇦🇷
Usuario
Puntos0
Posts9
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.