none
Error al actualizar una factura.... RRS feed

  • Pregunta

  • hola tengo un problemita me sale un error al intentar actualizar una factura realizada y guardada en bd

    cuando le doy al boton guardar que en realidad actualiza la factura me sale el mensaje de factura actualizada:

    con este codigo:

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
    
            Try
                Using conexion As New SqlConnection("Data Source=ASHLEY;Initial Catalog=OpticaBarraquel;Integrated Security=True")
                    conexion.Open()
    
    
                    Dim sql As String = "update FACTURA set CODIGO_FACTURA=@CODIGO_FACTURA,CODIGO_CLIENTES=@CODIGO_CLIENTES,NOMBRE_COMPLETO=@NOMBRE_COMPLETO,FECHA=@FECHA,EMPLEADO=@EMPLEADO,FORMA_DE_PAGO=@FORMA_DE_PAGO,TOTAL_DESCUENTO=@TOTAL_DESCUENTO,SUMA=@SUMA,DESCUENTO=@DESCUENTO,IVA=@IVA,BASE_IMPONIBLE=@BASE_IMPONIBLE,TOTAL=@TOTAL,VALOR=@VALOR,DEUDA=@DEUDA where CODIGO_FACTURA=@CODIGO_FACTURA"
    
    
                    Using cmd As New SqlCommand(sql, conexion)
    
                        cmd.Parameters.AddWithValue("@CODIGO_CLIENTES", TextBox1.Text)
    
                        cmd.Parameters.AddWithValue("@CODIGO_FACTURA", CODIGO_FACTURATextBox.Text)
                        cmd.Parameters.AddWithValue("@NOMBRE_COMPLETO", ComboBox1.Text)
                        cmd.Parameters.AddWithValue("@FECHA", FECHADateTimePicker.Text)
                        cmd.Parameters.AddWithValue("@EMPLEADO", EMPLEADOComboBox.Text)
                        cmd.Parameters.AddWithValue("@FORMA_DE_PAGO", ComboBox3.Text)
                        cmd.Parameters.AddWithValue("@TOTAL_DESCUENTO", TOTAL_DESCUENTOTextBox.Text)
                        cmd.Parameters.AddWithValue("@SUMA", SUMATextBox.Text)
                        cmd.Parameters.AddWithValue("@DESCUENTO", DESCUENTOTextBox.Text)
                        cmd.Parameters.AddWithValue("@IVA", IVATextBox.Text)
                        cmd.Parameters.AddWithValue("@BASE_IMPONIBLE", BASE_IMPONIBLETextBox.Text)
                        cmd.Parameters.AddWithValue("@TOTAL", TOTALTextBox.Text)
                        cmd.Parameters.AddWithValue("@VALOR", VALORTextBox.Text)
                        cmd.Parameters.AddWithValue("@DEUDA", DEUDATextBox.Text)
    
    
                        cmd.ExecuteNonQuery()
                        
                    End Using
    
                    Dim sqlgrid As String = "update DETALLE_FACTURA set CODIGO_FACTURA=@CODIGO_FACTURA,CODIGO_PRODUCTO=@CODIGO_PRODUCTO,DESCRIPCION_PRODUCTO=@DESCRIPCION_PRODUCTO,PRECIO_DE_VENTA=@PRECIO_DE_VENTA,CANTIDAD=@CANTIDAD,IVA=@IVA,TOTAL=@TOTAL"
    
                    Using cmd As New SqlCommand(sqlgrid, conexion)
    
                        Me.FACTURADataGridView.AllowUserToAddRows = False
    
                        For Each row As DataGridViewRow In FACTURADataGridView.Rows
    
                            cmd.Parameters.Clear()
    
                            cmd.Parameters.AddWithValue("@CODIGO_FACTURA", CODIGO_FACTURATextBox.Text)
                            cmd.Parameters.AddWithValue("@CODIGO_PRODUCTO", (row.Cells("CODIGO_PRODUCTO").Value))
                            cmd.Parameters.AddWithValue("@DESCRIPCION_PRODUCTO", (row.Cells("DESCRIPCION_PRODUCTO").Value))
                            cmd.Parameters.AddWithValue("@MARCA", (row.Cells("MARCA").Value))
                            cmd.Parameters.AddWithValue("@PRECIO_DE_VENTA", (row.Cells("PRECIO_DE_VENTA").Value))
                            cmd.Parameters.AddWithValue("@CANTIDAD", (row.Cells("CANTIDAD").Value))
                            cmd.Parameters.AddWithValue("@IVA", (row.Cells("IVA").Value))
                            cmd.Parameters.AddWithValue("@TOTAL", (row.Cells("TOTAL").Value))
    
    
                            cmd.ExecuteNonQuery()
                            'Dim idLineaFactura As Integer = cmd.ExecuteScalar
    
                        Next
    
    
                    End Using
    
                End Using
                RestarProductos()
    
                Me.FACTURADataGridView.AllowUserToAddRows = True
    
                MessageBox.Show("FACTURA ACTUALIZADA CON EXITO")
            Catch ex As Exception
    
                MessageBox.Show(ex.Message)
            End Try
    
            
        End Sub

    El problema es que al volver a dar doble click en el datagrid del cliente para ver la factura me sale este error:

    como veran las dos filas del datagrid son iguales al haber actualizado la factura y eso no eslo que necesito.

    espero haberme dado a entender gracias y saludos.


    domingo, 28 de abril de 2013 0:15

Respuestas

Todas las respuestas

  • Hola. En primer lugar para actualizar el detalle de la factura, no deberias realizar UPDATE.

    Deberias eliminar los detalles de esa factura y volver a INSERTAR nuevamente, esa es la manera como se debe trabajar.

    Ahora veo que en tus UPDATE que haces, actualizasel codigo de factura y luego usas ese codigo en tu WHERE, como que no tiene sentido.

    Te dejeo un ejemplo de como manejo el tema de Facutras o Maestros detalle.

    http://luismuhidalgo.blogspot.com/2012/12/orden-de-compra-en-una-arquitectura-n.html


    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú

    domingo, 28 de abril de 2013 0:22
  • Hola gracias por responder cuando me recomendo que eliminar el detalle de la factura y despues le haga un insert pues hice un metodo para que elimine el detalle de la factura y lo puse antes de la consulta del datagrid y funciono a la perfeccion. gracias al parecer ya entiendo un poco cuando me hablan de metodos y funciones sin que me muesten un codigo jajjaj de verde mil gracias me ayudo demasiado tu recomendacion.


    domingo, 28 de abril de 2013 1:23