Partage
  • Partager sur Facebook
  • Partager sur Twitter

verifier UnitsInStock >= qte

c# ado.net

    14 novembre 2017 à 0:53:42

    Salut tout le monde je veux mon application fait une verification si le stock est suffisant (Quantité commandée <= Quantité en stock, c.à.d.     UnitsInStock) et affiche le message « Stock insuffisant ! » si ce n’est pas le cas avant d'ajouter la ligne dans le datagrid view 

    voila mon code

    string req = "select UnitsInStock From Products where ProductID = " + comboBox2.SelectedItem.ToString();
                SqlCommand cmd = new SqlCommand(req, con1);
                con1.Open();
                SqlDataReader r = cmd.ExecuteReader();
                int a = 0;
                if(r.HasRows)
                { 
                r.Read();
                    a =(int) (r["UnitsInStock"]);
    
                }
                r.Close();
                con1.Close();
    
    
                //////////////////////
                if (a >= int.Parse(txt_Qte.Text))
                { 
                    decimal  montant;
                montant = (decimal.Parse(txt_PU.Text)) * (int.Parse(txt_Qte.Text)) * (1 - (decimal.Parse(txt_Remise.Text)));
                
                
                dataGridView1.Rows.Add(comboBox2.Text, txt_Qte.Text, txt_PU.Text, txt_Remise.Text, montant.ToString());
                decimal total = 0;
                for (int i = 0; i<dataGridView1.RowCount;i++)
                {
                    total += Convert.ToDecimal(dataGridView1.Rows[i].Cells[4].Value);
                }
                txt_Total.Text = total.ToString();
                }
                else
                {
                    MessageBox.Show("Stock insuffisant ! ");
                }



    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2017 à 15:45:05

      A part que le code est très mal indenté, qu'il est inutilement complexe, qu'il mélange code métier et code d'IHM, et qu'il ne gère pas le caractère transactionnel des opérations sur base de données, où est le problème ? o_O

      Moi, j'aurais utilisez une DataTable avec une colonne stockant les valeurs demandés par l'utilisateur, non couplé à une colonne de la base. Les autres colonnes liées aux colonnes de la table en base, plus une colonne calculée qui fait la soustraction entre la colonne des demandes de l'utilisateur et la colonne du stock dans la base.

      Un peu de customisation de la grille pour afficher les lignes avec une valeur négatives dans la colonne calculés en rouge, et c'est dans le boite pour l'affichage.

      Pour le caractère transactionnel, on passe par l'utilisation d'une procédure stockées ou l’enrôlement dans une transaction pour que les commandes soit sérialisées correctement dans la base et refuser en cas de stock insuffisant.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

      verifier UnitsInStock >= qte

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown