none
como grabar los datos de una factura(recibo) en la base de datos RRS feed

  • Pregunta

  • La tabla que uso para insertar los datos de la factura(ticket) es Ticket_Mostrador_Table

    Fecha viene de un control label

    tipo de compra viene de un control label

    Cajero viene de un control label

    Hora viene de la hora del sistema windows

    Unidades    datagrid

    codigo        datagrid

    Precio         datagrid

    total           datagrid

    descuento   datagrid

    importe ivu viene de un label

    cliente viene de un label

    como grabo los datos en la tabla, no tengo por separado una tabla de detalle factura, gracias

    sábado, 10 de agosto de 2013 14:18

Todas las respuestas

  • Lo primero te recomiendo rediseñar tu bbdd, haciendo un maestro detalle para los tickets

    Lo segundo usaría clases tipo Venta, VentaDetalle para guardar los datos que ingresas en tu formulario de venta y por ultimo mandaría esas clases a una capa de datos donde se realizarían las inserciones o actualizaciones.

    Puedes ver un pequeño ejemplo de este proceso en el siguiente Link.

    https://www.facebook.com/media/set/?set=a.10150230098175443.322012.192522185442&type=3

    Tambien puedes ver mi proyecto de punto de venta en este Link.

    https://www.facebook.com/media/set/?set=a.466730345442.255915.192522185442&type=3

    Saludos


    nunca te acostarás sin saber una cosa más

    domingo, 11 de agosto de 2013 3:19
  •  Public Sub Insertar_Nuevo_Ticket_Mostrador()
            Try
                Using conexion As New SqlConnection(cadenaconexion)
                    conexion.Open()
                    Dim sql As String = "insert into Ticket_Mostrador_Table(NumeroTicket,TipoCompra,Cajero,Cliente,Unidades,Codigo,Descripcion,Precio,Subtotal,Total,ImporteIvu) VALUES(@NumeroTicket,@TipoCompra,@Cajero,@Cliente,@Unidades,@Codigo,@Descripcion,@Precio,@Subtotal,@Total,@ImporteIvu)"
                    For Each row As DataGridViewRow In DataGridView1.Rows
                        Using cmd As New SqlCommand(sql, conexion)
                            cmd.Parameters.AddWithValue("@NumeroTicket", lblticketmostrador.Text)
                            cmd.Parameters.AddWithValue("@TipoCompra", Label2.Text)
                            cmd.Parameters.AddWithValue("@Cajero", txtnombreempleado.Text)
                            cmd.Parameters.AddWithValue("@Cliente", lblcliente.Text)
                            cmd.Parameters.AddWithValue("@Unidades", (row.Cells("Cantidad").Value))
                            cmd.Parameters.AddWithValue("@Codigo", (row.Cells("Codigo").Value))
                            cmd.Parameters.AddWithValue("@Descripcion", (row.Cells("Descripcion").Value))
                            cmd.Parameters.AddWithValue("@Precio", (row.Cells("Precio1").Value))
                            cmd.Parameters.AddWithValue("@Subtotal", TextBox3.Text)
                            cmd.Parameters.AddWithValue("@Total", TextBox2.Text)
                            cmd.Parameters.AddWithValue("@ImporteIvu", TextBox4.Text)
                            cmd.ExecuteNonQuery()
                        End Using
                    Next
                    conexion.Close()
                End Using
                MessageBox.Show("Grabado exitoso")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
    
            End Try
        End Sub
    Yo uso este codigo pero no me graba en la base de datos aunque no me da ningun error, lo que yo quisiera seria anadir la tabla detalle_de_Factura_Table y relacionarla con la tabla de ticket_Mostrador_Tabe, he visto codigos de ejemplo asi pero no estoy seguro por que campo tendra que relacionarla a ver si tienes alguna ayuda al respecto, gracias por contestar
    domingo, 11 de agosto de 2013 13:27
  • Yo tendría una tabla Ticket con los datos relativos al Ticket: TicketID (Clave+AutoIncremental), Fecha, ClienteID, etc... y luego tendría una tabla TicketDetalle con los datos relativos a cada linea de venta: LineaID (Clave+AutoIncremental), TicketID (Esta campo hace referencia a la tabla Ticket), ArticuloID, etc...

    Lo haría en una aplicación de 4 capas (Datos, Entidades, Negocio, Presentación) como puedes ver en el ejemplo que te puse en la respuesta anterior.

    Si prefieres tener una aplicación monolítica, tampoco hay ningún problema, rediseña la bbdd lo primero y luego vamos viendo más problemas.

    Saludos


    nunca te acostarás sin saber una cosa más

    domingo, 11 de agosto de 2013 20:21
  • Asi tengo la base de datos y abajo te dejo el codigo que implemente, cuando corro la aplicacion y me sale un mensaje que me dice que el object Ticket_Mostrador_Table no es valido, mira el codigo a ver si ver algun error

     Public Sub Insertar_Nuevo_Ticket_Mostrador()
            Try
                Using conexion As New SqlConnection(cadenaconexion)
                    conexion.Open()
    
                    Dim idEncabezadoFactura As Integer = 0
    
                    Dim sql As String = "INSERT INTO Ticket_Mostrador_Table(NumeroTicket,TipoCompra,Cajero,Cliente)VALUES(@NumeroTicket,@TipoCompra,@Cajero,@Cliente)"
    
                    Using cmd As New SqlCommand(sql, conexion)
    
                        cmd.Parameters.AddWithValue("@NumeroTicket", lblticketmostrador.Text)
                        cmd.Parameters.AddWithValue("@TipoCompra", Label2.Text)
                        cmd.Parameters.AddWithValue("@Cajero", txtnombreempleado.Text)
                        cmd.Parameters.AddWithValue("@Cliente", lblcliente.Text)
    
                        idEncabezadoFactura = (cmd.ExecuteScalar())
                    End Using
    
                    Dim sqlgrid As String = "INSERT INTO Detalle_Ticket_Mostrador(Unidades,Codigo,Descripcion,Precio,Subtotal,Total) VALUES(@Unidades,@Codigo,@Descripcion,@Precio,@Subtotal,@Total)"
    
                    Using cmd As New SqlCommand(sqlgrid, conexion)
    
                        Me.DataGridView1.AllowUserToAddRows = False
    
                        For Each row As DataGridViewRow In DataGridView1.Rows
    
                            cmd.Parameters.Clear()
                            cmd.Parameters.AddWithValue("@Unidades", (row.Cells("Cantidad").Value))
                            cmd.Parameters.AddWithValue("@Codigo", (row.Cells("Codigo").Value))
                            cmd.Parameters.AddWithValue("@Descripcion", (row.Cells("Descripcion").Value))
                            cmd.Parameters.AddWithValue("@Precio", (row.Cells("Precio1").Value))
                            cmd.Parameters.AddWithValue("@Subtotal", TextBox3.Text)
                            cmd.Parameters.AddWithValue("@Total", TextBox2.Text)
                            Dim idLineaFactura As Integer = (cmd.ExecuteScalar())
                        Next
                    End Using
                End Using
                MessageBox.Show("VENTA REALIZADA EXITO")
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    domingo, 11 de agosto de 2013 21:46