none
Pasar Datos entre form RRS feed

  • Pregunta

  • Buenas , para solicitor su apoyo ya logre informacion entre from pero deseo cargar los datos sin tener que abrir mi form facture para ir llenando

    les mostrare mi codigo deseo que se quede como en la nube hasta no dar en el boton ver facture , para poder ver todo lo que carge , un estilo carrito de compras donde seleccionas lo que deseas , y al fina vez lo que deseas  , espero me puedan ayudar

    from factura

    Public Class Factura
        'Creo mis variables y columnas tipo "públicas" a mostrar en el DatGridView
        'porque las invocaré desde el formulario "BuscaArticulos".
        Public Dt As New DataTable
        Public Dr As DataRow
    
        Public DcCodigo As New DataColumn("Código", GetType(System.String))
        Public DcDescripcion As New DataColumn("Descripción", GetType(System.String))
        Public DcCantidad As New DataColumn("Cantidad", GetType(System.Int16))
        Public DcPrecio As New DataColumn("Precio", GetType(System.Decimal))
        Public DcImporte As New DataColumn("Importe", GetType(System.Decimal))
    
        Private Sub Factura_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
           
    
            'Aplico un tipo de borde a las cajas de texto.
            Me.TxtSubTotal.BorderStyle = BorderStyle.FixedSingle
            Me.TxtIGV.BorderStyle = BorderStyle.FixedSingle
            Me.TxtTotal.BorderStyle = BorderStyle.FixedSingle
    
            'Configure la columna Código para que sea única.
            DcCodigo.Unique = True
            'Agrego las columnas en el DataTable para luego cargarlas en el DataGridView.
            With Dt.Columns
                .Add(DcCodigo)
                .Add(DcDescripcion)
                .Add(DcCantidad)
                .Add(DcPrecio)
                .Add(DcImporte)
            End With
            Me.DgvFactura.DataSource = Dt
    
            'Formato a su gusto:
            With Me.DgvFactura
                .AllowUserToAddRows = False
                .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
                .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllHeaders
                .ReadOnly = True
                .SelectionMode = DataGridViewSelectionMode.FullRowSelect
                .ShowCellToolTips = False
    
                .Columns("Código").Visible = True
                .Columns("Código").Width = 70
                .Columns("Código").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("Código").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
    
                .Columns("Descripción").Visible = True
                .Columns("Descripción").Width = 340
                .Columns("Descripción").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("Descripción").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
    
                .Columns("Cantidad").Visible = True
                .Columns("Cantidad").Width = 70
                .Columns("Cantidad").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("Cantidad").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
    
                .Columns("Precio").Visible = True
                .Columns("Precio").Width = 70
                .Columns("Precio").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("Precio").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    
                .Columns("Importe").Visible = True
                .Columns("Importe").Width = 70
                .Columns("Importe").DefaultCellStyle.Format = "##,##0.00"
                .Columns("Importe").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("Importe").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            End With
        End Sub
    
        Private Sub BtnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBuscar.Click
            BuscarArticulos.ShowDialog()
        End Sub
    
       
    End Class
    
    from buscar
    Dim Conexion As String = ""
        Dim Cn As New SqlConnection(Conexion)
    
        Private Sub ListarDataGridView()
            'Creo mi variable que almacenará el comando (la orden en sql) que está en el procedimiento almacenado.
            Dim Cmd As New SqlCommand("Sp_ListarArticulo", Cn)
            'La variable que contiene el comando le indico que será de tipo "Procedimiento Almacenado".
            Cmd.CommandType = CommandType.StoredProcedure
            'El comando lo asocio a la conexión.
            Cmd.Connection = Cn
    
            'Creo un adaptador que contiene el comando.
            Dim Da As New SqlDataAdapter(Cmd)
            'Indicando los parámetros del Sp.
            With Da.SelectCommand.Parameters
                .Add("@NombreArticulo", SqlDbType.VarChar, 50).Value = Me.TxtArticulo.Text
                .Add("@Estado", SqlDbType.VarChar, 1).Value = "H"
            End With
            'Creo mi DataTable.
            Dim DtListar As New DataTable
            'Creo una nueva isntancia del DtaTable.
            DtListar = New DataTable
            'Los datos obtenidos que trajo el adaptador han sido depositados en el DataTable
            'para poder manipularlos mostrándolos en el DatagridView.
            Da.Fill(DtListar)
            Me.DgvArticulos.DataSource = DtListar
    
            'Creo un contador para los registros.
            Dim Fila As Integer = Me.DgvArticulos.Rows.Count
            If Fila = 0 Then Me.LblCantidad.Text = Fila & " Registro encontrado...!"
            If Fila = 1 Then Me.LblCantidad.Text = Fila & " Registro encontrado...!"
            If Fila > 1 Then Me.LblCantidad.Text = Fila & " Registros encontrados...!"
        End Sub
    
        Private Sub FormatoDataGridView()
            'Formato a su gusto:
            With Me.DgvArticulos
                .AllowUserToAddRows = False
                .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
                .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllHeaders
                .ReadOnly = True
                .SelectionMode = DataGridViewSelectionMode.FullRowSelect
                .ShowCellToolTips = False
    
                .Columns("idart").HeaderText = "Código"
                .Columns("idart").Visible = True
                .Columns("idart").Width = 70
                .Columns("idart").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("idart").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
    
                .Columns("nombre").HeaderText = "Artículo"
                .Columns("nombre").Visible = True
                .Columns("nombre").Width = 250
                .Columns("nombre").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("nombre").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
    
                .Columns("p_pvp").HeaderText = "PVPx"
                .Columns("p_pvp").Visible = True
                .Columns("p_pvp").Width = 70
                .Columns("p_pvp").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("p_pvp").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    
                .Columns("p_blister").HeaderText = "PVPx Blister"
                .Columns("p_blister").Visible = True
                .Columns("p_blister").Width = 70
                .Columns("p_blister").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("p_blister").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    
                .Columns("p_fraccion").HeaderText = "PVPx Fracción"
                .Columns("p_fraccion").Visible = True
                .Columns("p_fraccion").Width = 70
                .Columns("p_fraccion").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                .Columns("p_fraccion").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    
                .Columns("imagen").Visible = False
            End With
        End Sub
    
        Private Sub BuscarArticulos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            Me.TxtArticulo.Text = ""
            Me.TxtCantidad.Text = ""
            Me.TxtArticulo.Focus()
        End Sub
    
        Private Sub BuscarArticulos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Call ListarDataGridView()
            Call FormatoDataGridView()
    
            'Aplico un tipo de borde a las cajas de texto.
            Me.TxtArticulo.BorderStyle = BorderStyle.FixedSingle
            Me.TxtCantidad.BorderStyle = BorderStyle.FixedSingle
        End Sub
    
        Private Sub TxtArticulo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtArticulo.TextChanged
            Call ListarDataGridView()
        End Sub
    
        Private Sub TxtCantidad_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtCantidad.KeyPress
            'valido para que se ingrese solo números
            If InStr("0123456789" & Chr(8), e.KeyChar) Then
                e.Handled = False
            Else
                MsgBox("Solo se aceptan Números.", MsgBoxStyle.Exclamation, "Aviso")
                e.Handled = True
            End If
        End Sub
    
        Private Sub DgvArticulos_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DgvArticulos.DoubleClick
            'Controlo el error que se podría generar si hay duplicado de registro validado por el "Cógigo".
            Try
                'Condiciono si no ingreso la cantidad.
                If Me.TxtCantidad.Text = "" Then
                    MsgBox("Ingresar la cantidad a vender", MsgBoxStyle.Exclamation, "Aviso")
                    Me.TxtCantidad.Focus()
                Else 'De lo contrario.
                    Dim DgvFila As DataGridViewRow = Me.DgvArticulos.CurrentRow
                    With Factura
                        .Dr = Factura.Dt.NewRow
                        .Dr(Factura.DcCodigo) = DgvFila.Cells("idart").Value.ToString
                        .Dr(Factura.DcDescripcion) = DgvFila.Cells("nombre").Value.ToString
                        .Dr(Factura.DcCantidad) = Me.TxtCantidad.Text
                        .Dr(Factura.DcPrecio) = DgvFila.Cells("p_fraccion").Value.ToString
                        .Dr(Factura.DcImporte) = Me.TxtCantidad.Text * DgvFila.Cells("p_fraccion").Value.ToString
                        .Dt.Rows.Add(Factura.Dr)
                    End With
                        'Le indico al DataGridView de la Factura que no seleccione ninguna fila.
                        Factura.DgvFactura.CurrentRow.Selected = False
    
                        'Creo un contador para los registros de la Factura.
                        Dim Fila As Integer = Factura.DgvFactura.Rows.Count
                        If Fila = 0 Then Factura.LblCantidad.Text = Fila & " Registro encontrado...!"
                        If Fila = 1 Then Factura.LblCantidad.Text = Fila & " Registro encontrado...!"
                        If Fila > 1 Then Factura.LblCantidad.Text = Fila & " Registros encontrados...!"
    
                        'Creo mi DataTable y variables para contar las celdas de la columna "Importe" de la Factura.
                        Dim DtBuscar As New DataTable
                        Dim N As Integer
                        Dim Total, TotalNeto, IGV As Decimal
    
                        'Creo un bucle que me permita contar.
                        For N = 0 To Factura.Dt.Rows.Count - 1
                        Total += Factura.Dt.Rows(N)("Importe") 'Nombre de la columna del formulario Factura.
                        Next
                        Factura.TxtTotal.Text = Total.ToString("##,##0.00")
                        TotalNeto = Factura.TxtTotal.Text
                        IGV = TotalNeto * 0.18
                        Factura.TxtIGV.Text = IGV
                        Factura.TxtSubTotal.Text = TotalNeto - IGV
    
                        'Cierro el formulario.
                        Me.Close()
                End If
            Catch ex1 As System.Data.ConstraintException
                MsgBox("El Artículo ya ha sido seleccionado", MsgBoxStyle.Information, "Verificar")
                Me.TxtArticulo.Text = ""
                Me.TxtCantidad.Text = ""
                Me.DgvArticulos.CurrentRow.Selected = False
                Me.TxtArticulo.Focus()
            Catch ex2 As Exception
                MsgBox("El error es: " & ex2.Message)
            End Try
        End Sub

    jueves, 14 de febrero de 2019 14:49

Todas las respuestas

  • Hola Darwin123456
    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.

    Proporcionaremos una respuesta lo más pronto posible.

    Gracias por usar los foros de MSDN.

    Pedro Alfaro
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    jueves, 14 de febrero de 2019 16:50
    Moderador
  • Para poderte ayudar necesito que me contestes una pregunta importante,

    1 - los datos de los articulos que quieres vender ya estan en una base de datos?

    2 - como buscas los articulos que quieres vender, tienes fotos de los articulos y ahi le das click o lo buscas por algun codigo de barras o algo asi, yo ya hize un punto de ventas y te podria ayudar con un codigo bien logico y bien poderoso. escribeme exito 

    viernes, 15 de febrero de 2019 20:19
  • perdoname no habia visto tu respuesta , si busco en una base de datos , y mis product los paso con un click , espero puedas ayudar amigo muchas gracias cualquier duda estare pendiente
    martes, 19 de febrero de 2019 15:54
  • miércoles, 20 de febrero de 2019 0:03
  • Te acabo de enviar una foto de una pantalla de puntos de ventas que la puedes amoldar a cualquier tipo de articulos de venta en mi caso no la uso para articulos de ventas sino mas bien a pagos de estudiantes pero igual puedes amoldarla, no necesitas dos pantallas para tu punto de ventas, con una sola basta, fijate bien el textbox que esta en negro con letras verdes, ahi con un scanner de codigo de barra leo y automaticamente el articulos se va a un datagridview que es el que vez a la mano izquierda, el sistema automaticamente te lleva la cantidad, el codigo, la descripcion del articulos el precio y el total, si tu quieres tener mas de un articulo solo le das al teclado 2* y escaneas el articulo o 2* y tocas de forma touch la pantalla y te sale el articulo que quieres vender, mira muchacho si te interesa el codigo, la base de datos y una explicacion mas profunda del tema necesitas wasapiarme (si deseas), he estado por anos perfeccionando el sistema y lo aplico a cualquier situacion donde hayas transacciones de dinero, si deseas con whatsapp o email solo escribeme, voy a estar pendiente y con gusto te ayudo, exito
    miércoles, 20 de febrero de 2019 0:09
  • Me dejas donde pueda contactarte ?
    lunes, 25 de febrero de 2019 23:57