Reporte de Salidas
Diseño de la pantalla
Para comenzar, le daremos diseño al formulario "frmSalidasLista" el cual nos servirá para mostrar un listado de las salidas que se hayan registrado, la apariencia debe de quedar mas o menos así:
Se agregaron tres Button, un ListView y un Label, las propiedades están descritas en la siguiente tabla:
Objeto | Propiedad | Valor |
Button | Name | btnNueva |
Text | Nueva | |
Button | Name | btnMostrar |
Text | Mostrar | |
Button | Name | btnSalir |
Text | Salir | |
ListView | Name | lvSalidas |
FullRowSelect | True | |
GridLines | True | |
HideSelection | False | |
Label | Name | lblMensaje |
Text | Doble clic para imprimir. |
Ahora procedemos con el diseño del reporte de salidas, este proceso se muestra en la parte 4 de este tutorial, el cual deberá quedar mas o menos así:
Directivas Imports:
Imports System.Data Imports System.Data.OleDb Imports Microsoft.Reporting.WinForms Imports System.IO
Ahora agregamos los siguientes procedimientos:
Protected Sub generarColumnas() With lvSalidas .Clear() .View = View.Details .Columns.Add("Folio ", 40, HorizontalAlignment.Left) .Columns.Add("Salida", 85, HorizontalAlignment.Left) .Columns.Add("Responsable", 200, HorizontalAlignment.Left) End With End Sub Protected Sub mostrarSalidas() Dim cnn As New OleDbConnection(CnnStr) Try cnn.Open() Dim cmd As New OleDbCommand() cmd.Connection = cnn cmd.CommandText = "select * from salidas" Dim dr As OleDbDataReader = cmd.ExecuteReader() Dim i As Integer = 0 lvSalidas.Items.Clear() While (dr.Read()) ''mostramos los datos With lvSalidas .Items.Add(dr("id_salida").ToString()) .Items(i).SubItems.Add(String.Format("{0:dd/MM/yyyy}", dr("fecha_salida"))) .Items(i).SubItems.Add(dr("responsable").ToString()) End With i += 1 End While dr.Close() Catch ex As Exception Throw (ex) Finally cnn.Close() End Try End Sub Protected Sub mostrarReporte(ByVal idSalida As Integer) Dim cnn As New OleDbConnection(CnnStr) Try cnn.Open() If Not File.Exists(RptSalida) Then Throw (New Exception(String.Format("No existe el archivo: {0}", RptEntrada))) End If ''AHORA MOSTRAMOS EL REPORTE Dim cmd As New OleDbCommand() cmd.Connection = cnn cmd.CommandText = "select d.*,a.articulo " + " from salidas_detalle d,articulos a " + " where a.id_articulo=d.id_articulo " + " and id_salida=@idSalida" cmd.Parameters.Add("@idSalida", OleDbType.Integer).Value = idSalida Dim dsReporte As New DataSet() Dim da As New OleDbDataAdapter(cmd) da.Fill(dsReporte, "rptSalida") If (dsReporte.Tables("rptSalida").Rows.Count = 0) Then Throw (New Exception("No hay Datos")) End If Dim frm As New frmVerReporte frm.reportViewer1.LocalReport.DataSources.Clear() frm.reportViewer1.LocalReport.Dispose() frm.reportViewer1.Reset() frm.reportViewer1.LocalReport. DataSources.Add(New ReportDataSource("dsRptSalida", dsReporte.Tables("rptSalida"))) frm.reportViewer1.LocalReport.ReportPath = RptSalida ''parametros ''List<ReportParameter> param = new List<ReportParameter>() Dim param As New List(Of ReportParameter) Dim cmdDet As New OleDbCommand("select * " + "from salidas where id_salida=@idSalida", cnn) cmdDet.Parameters.Add("@idSalida", OleDbType.Integer).Value = idSalida Dim dr As OleDbDataReader = cmdDet.ExecuteReader() If (dr.Read()) Then ''id_Salida Dim pIdSalida As New ReportParameter() pIdSalida.Name = "prmIdSalida" pIdSalida.Values.Add(dr("id_salida").ToString()) param.Add(pIdSalida) ''fecha_Salida Dim pFechaEntrada As New ReportParameter() pFechaEntrada.Name = "prmFechaSalida" pFechaEntrada.Values.Add(dr("fecha_salida")) param.Add(pFechaEntrada) ''responsable Dim pResponsable As New ReportParameter() pResponsable.Name = "prmResponsable" pResponsable.Values.Add(dr("responsable").ToString()) param.Add(pResponsable) End If dr.Close() ''agregamos los parametros a la coleccion frm.reportViewer1.LocalReport.SetParameters(param) frm.reportViewer1.RefreshReport() frm.ShowDialog() cnn.Close() Catch ex As Exception Throw (ex) Finally cnn.Close() End Try End Sub
Agregamos sl siguiente código en el Form_Load:
Try generarColumnas() mostrarSalidas() Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try
Luego, agregamos el siguiente código:
Private Sub lvSalidas_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvSalidas.DoubleClick Try If (lvSalidas.SelectedItems.Count <> 0) Then Dim _FolioSalida As Integer = Convert.ToInt32(lvSalidas.SelectedItems(0).Text) mostrarReporte(_FolioSalida) End If Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub
El código para el botón btnNueva:
Dim frm As New frmSalida frm.StartPosition = FormStartPosition.CenterScreen frm.ShowDialog()
El código para el botón btnMostrar:
Try mostrarSalidas() Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try
El código para el botón btnSalir
Me.Close()
Aqui un ejemplo de la pantalla funcionando:
Aqui un ejemplo del reporte:
Hasta este punto ya hemos desarrollado la funcionalidad básica. En la siguiente parte haremos que aparesca una pantalla pricipal desde la que mandaremos llamar las que hasta hoy hemos desarrollado.
Hola que tal ..
ResponderEliminarMuy buenos estos tutos ...
Solo no entendí "select d.*,a.articulo " +
" from salida_detalle d,articulos a
la "d" y la "a" para que son ???
Saludos y gracias
se les llama "alias"
ResponderEliminarGracias ...!!
ResponderEliminar