Visual Basic.NET - validar stock antes de cargar una grilla

 
Vista:
sin imagen de perfil
Val: 34
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

validar stock antes de cargar una grilla

Publicado por djnilo (24 intervenciones) el 07/03/2018 20:30:57
hola buenas tardes
tengo una aplicacion de pedidos pequeña vb 2015 sql 2014
tengo un problema validar que al presionar un boton que aumenta la cantidad de productos en grila valide que no supere el stock que tengo trate de hacerlo .
este es mi codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Function RetreiveProductDetails(ProductID As Integer) As CpE_Cls_PRODUCTO
    Dim Conn As New SqlConnection(Conexion.Connectionstring)
    Dim Cmd As New SqlCommand
    Dim Result As CpE_Cls_PRODUCTO = Nothing
    Try
        Conn.Open()
        Cmd.CommandText = "SELECT IdProducto,Nombre,precio,stock From Producto Where IdProducto=@ProductID"
        Cmd.CommandType = CommandType.Text
        Cmd.Connection = Conn
        Cmd.Parameters.Add("@ProductID", SqlDbType.Int).Value = ProductID
        Dim reader As SqlDataReader = Cmd.ExecuteReader
        Dim Productos As New List(Of CpE_Cls_PRODUCTO)
        If reader.HasRows Then
            Result = New CpE_Cls_PRODUCTO
            If reader.Read Then
                Result.idproducto = reader.GetInt32(0)
                Result.Nombre = reader.GetString(1)
                 Result.precio = reader.GetDecimal(2)
              reader.GetInt32(5)
                Result.stock = reader.GetInt32(3)
 
            End If
        End If
        reader.Close()
    Catch ex As Exception
        Throw New Exception(ex.Message)
    End Try
    Return Result
End Function

funcion que buscar por idproducto y lo carga
1
2
3
4
Function BuscarProducto(ProductoId As Integer)
    Dim objdatos As New CAPA_DATOS.CpD_Cls_PRODUCTO
    Return objdatos.RetreiveProductDetails(ProductoId)
End Function
codigo que no funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub BtnAumentar_Click(sender As Object, e As EventArgs) Handles BtnAumentar.Click
    Dim Producto As New CpE_Cls_PRODUCTO
    Dim objProducto As New CpN_Cls_PRODUCTO
    Dim mSaldo As Integer
 
    Dim RowIndex As Integer = ProductsGridView.CurrentRow.Index
    Dim ProductID As Integer = Convert.ToInt32(ProductsGridView.CurrentRow.Cells("IdProducto").Value)
 
 
    If ProductsGridView.RowCount > 0 Then
        ProductDetails = mostrar.BuscarProducto(ProductID)' carga los productos por el id seleccionado
 
       Producto.stock = Convert.ToInt32(ProductsGridView.CurrentRow.Cells(3).Value)
        mSaldo = Producto.stock  ' msaldo seria variable que guarda para comparar con la cantidad
        If myProducto.stock >= 1 Then
            'If CheckProductAlreadyAdded(ProductID) Then
 
            Dim Quantity As Integer = Convert.ToInt32(ProductsGridView.Rows(RowIndex).Cells("Cantidad").Value)
            Dim Price As Decimal = Convert.ToInt32(ProductsGridView.Rows(RowIndex).Cells("Precio").Value)
            Quantity += 1
            '/////////// <Hacer esto ... Importante ... Tener una parte decimal en el precio total>
            Dim TotalPrice As Double = Convert.ToDouble(Quantity * Price)
            ProductsGridView.Rows(RowIndex).Cells("Cantidad").Value = Quantity
 
            ProductsGridView.Rows(RowIndex).Cells("Importe").Value = TotalPrice
            TotalBillBox.Text = CalculateTotalBill(ProductsGridView).ToString()
 
            If Producto.stock >= mSaldo Then
                MessageBox.Show("Se ha superado el stock", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Exit Sub
 
            Else
                ProductsGridView.Rows.Add(ProductID, ProductDetails.Nombre, ProductDetails.precio, 1, ProductDetails.precio * 1)
                TotalBillBox.Text = CalculateTotalBill(ProductsGridView).ToString()
 
            End If
        End If
    End If

cuando comparo la variable msaldo con cantidad no funciona
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kingk
Val: 9
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

validar stock antes de cargar una grilla

Publicado por kingk (77 intervenciones) el 08/03/2018 05:18:46
Hola, el problema esta en los valores que les asignas, por ejemplo en msaldo deberías asignar el stock del producto que recuperas, si el único objetivo del método buscarProducto es para obtener el stock seria que lo modifiques para ello. También el stock, deberías compararlo con la variable quality ya que esta es la que tiene la cantidad, revisa bien los valores que asignas. Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 34
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

validar stock antes de cargar una grilla

Publicado por djnilo (24 intervenciones) el 08/03/2018 16:15:20
muchas gracias por responder kink trata de hacerlo lo que dices pero empiza a repetir los datos en la grilla
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub BtnAumentar_Click(sender As Object, e As EventArgs) Handles BtnAumentar.Click
        Dim Producto As New CpE_Cls_PRODUCTO
        Dim objProducto As New CpN_Cls_PRODUCTO
        Dim stock As Integer
 
        Dim RowIndex As Integer = ProductsGridView.CurrentRow.Index
        Dim ProductID As Integer = Convert.ToInt32(ProductsGridView.CurrentRow.Cells("IdProducto").Value)
 
 
        If ProductsGridView.RowCount > 0 Then
            ProductDetails = mostrar.BuscarProducto(ProductID)
 
            Producto.stock = Convert.ToInt32(ProductsGridView.CurrentRow.Cells(3).Value)
            stock = Producto.stock
 
            'If CheckProductAlreadyAdded(ProductID) Then
 
            Dim Quantity As Integer = Convert.ToInt32(ProductsGridView.Rows(RowIndex).Cells("Cantidad").Value)
            Dim Price As Decimal = Convert.ToInt32(ProductsGridView.Rows(RowIndex).Cells("Precio").Value)
            Quantity += 1
            '/////////// <Hacer esto ... Importante ... Tener una parte decimal en el precio total>
            Dim TotalPrice As Double = Convert.ToDouble(Quantity * Price)
            ProductsGridView.Rows(RowIndex).Cells("Cantidad").Value = Quantity
 
            ProductsGridView.Rows(RowIndex).Cells("Importe").Value = TotalPrice
            TotalBillBox.Text = CalculateTotalBill(ProductsGridView).ToString()
 
            If stock >= Quantity Then trate comparar el stock con la cantidad que se va agregando
 
                MessageBox.Show("Se ha superado el stock", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Exit Sub
 
            Else
                ProductsGridView.Rows.Add(ProductID, ProductDetails.Nombre, ProductDetails.precio, 1, ProductDetails.precio * 1)
                TotalBillBox.Text = CalculateTotalBill(ProductsGridView).ToString()
 
            End If
        End If


If stock >= Quantity Then trate comparar el stock con la cantidad que se va agregando pero empeso a repetirse los datos en la grila
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar