Teniendo las tablas productos,almacenes e inventario, en un DataGridView muestre el producto, almacén, las existencia iniciales,las entradas, las salidas y las existencias finales por día.
la tabla quedaría así:
PRODUCTO|ALMACEN|STOCK INICIAL|ENTRADAS|SALIDAS|STOCK FINAL|FECHA|
lo que necesito es que el STOCK INICIAL me lo guarde una sola vez y el los demás valores cambien dependiendo de cuanto entre y salga para que me de un valor final por día
por ejemplo al inicio del día hay 100 unidades, entran 20 mas, salen 80, y el finaliza con 40 unidades.
Código vb:
Ver original
'Verificamos si exite un registro en movimientos CADb = "SELECT id_almacen,id_producto,fecha FROM movimientos WHERE id_almacen='" & Convert.ToString(row.Cells("IDAlmacen").Value) & "' AND id_producto = '" & Convert.ToString(row.Cells("IDProducto").Value) & "' AND fecha='" & Convert.ToString(row.Cells("Fecha").Value) & "'" da = New MySqlDataAdapter(CADb, Conexion) dt = New DataTable Try da.Fill(dt) Catch ex As Exception MsgBox("Error :", ex.Message) End Try 'Si existe recupéramos el stock inicial y realizamos las operaciones necesarias, si no el stock inicial queda como 0 ya que el producto es nuevo, por lo tanto no hay existencias If dt.Rows.Count = 1 Then Try dt = New DataTable CADa = "SELECT actual_bt,actual_kg FROM movimientos WHERE id_producto = ?id AND id_almacen= ?ida" cmd = New MySqlCommand(CADa, Conexion) cmd.Parameters.AddWithValue("?id", Convert.ToString(row.Cells("IDProducto").Value)) cmd.Parameters.AddWithValue("?id", Convert.ToString(row.Cells("IDAlmacen").Value)) da = New MySqlDataAdapter(cmd) da.Fill(dt) 'Asignamos a Variable Eq el valor de equivalente If dt.Rows.Count > 0 Then x = dt.Rows(0).Item("actual_bt").ToString() y = dt.Rows(0).Item("actual_kg").ToString() End If Catch ex As Exception MsgBox("Error :", ex.Message) End Try ini =? inik =? en = b enk = k sal = 0 salk = 0 fin = ini + b fink = inik + k 'Recuperamos el valor inicial de la BD, para poder realizar nuetras operacionde de conversión CADc = "UPDATE movimientos SET inicial_bt=" & ini & "',inicial_kg=" & inik & "',entrada_bt='" & en & "',entrada_bt='" & enk & "',actual='" & fin & "',actual='" & fink & "' WHERE id_producto = '" & Convert.ToString(row.Cells("IDProducto").Value) & "' AND id_almacen='" & Convert.ToString(row.Cells("IDAlmacen").Value) & "'" Try 'Abrimos la conexion Conexion.Open() 'Asignamos el valor de la query a la variable cmd cmd = New MySqlCommand(CADc, Conexion) 'Ejecutamos la query cmd.ExecuteNonQuery() 'Cerramos conexion Conexion.Close() Catch ex As Exception MsgBox("Error :", ex.Message) Conexion.Close() End Try Else ini = 0 inik = 0 en = b enk = k fin = b fink = k CADc = "INSERT INTO movimientos (id_producto,id_almacen,inicial_bt,inicial_kg,entrada_bt,entrada_kg,salida_bt,salida_kg,actual_bt,actual_kg,fecha) values ('" & Convert.ToString(row.Cells("IDProducto").Value) & "','" & Convert.ToString(row.Cells("IDAlmacen").Value) & "','" & ini & "','" & inik & "','" & en & "','" & enk & "','" & sal & "','" & salk & "','" & fin & "','" & fink & "','" & Convert.ToString(row.Cells("Fecha").Value) & "')" Try 'Abrimos la conexion Conexion.Open() 'Asignamos el valor de la query a la variable cmd cmd = New MySqlCommand(CADc, Conexion) 'Ejecutamos la query cmd.ExecuteNonQuery() 'Cerramos conexion Conexion.Close() Catch ex As Exception MsgBox("Error :", ex.Message) Conexion.Close() End Try End If
lo que necesito es que le valor inicial no cambie, si no hasta el siguiente día