Sistema de Almacén Visual Basic (Parte 6)


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:
ObjetoPropiedadValor
ButtonNamebtnNueva
TextNueva
ButtonNamebtnMostrar
TextMostrar
ButtonNamebtnSalir
TextSalir
ListViewNamelvSalidas
FullRowSelectTrue
GridLinesTrue
HideSelectionFalse
LabelNamelblMensaje
TextDoble 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.


Regresar a la parte 5|Ir a la parte 7

¡Hacer clic en +1 No te Cuesta Nada!

3 comentarios:

  1. Hola que tal ..

    Muy 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

    ResponderEliminar