none
C# WPF Access Query Update ne fonctionne pas RRS feed

  • Discussion générale

  • Bonjour voici un code qui doit mettre à jour une table d'une base de donnée Access en fonction des champs remplis dans le UserControl (voir capture).

    Ce code s'execute sans aucune erreur du début à la fin, j'ai même inséré des points d'arrêts pour vérifier que les paramètres retournés étaient bon, mais la table n'est pas mise à jour.

    Je ne vois pas ou est le problème.

      private void UpdateCharg()
            {
                int i = 0;
                comm = new OleDbCommand("UPDATE ENTREPOT_PLANNING_CHARG SET ENTR_PC_DATE=@ENTR_PC_DATE,ENTR_PC_HEURE=@ENTR_PC_HEURE," +
                    "ENTR_PC_CLI=@ENTR_PC_CLI,ENTR_PC_ART=@ENTR_PC_ART,ENTR_PC_QTE=@ENTR_PC_QTE,ENTR_PC_ART2=@ENTR_PC_ART2,ENTR_PC_QTE2=@ENTR_PC_QTE2, " +
                    "ENTR_PC_ART3=@ENTR_PC_ART3,ENTR_PC_QTE3=@ENTR_PC_QTE3,ENTR_PC_ART4=@ENTR_PC_ART4,ENTR_PC_COMM=@ENTR_PC_COMM,ENTR_PC_ISCH=@ENTR_PC_ISCH " +
                    "WHERE ENTR_PC_ID=@ENTR_PC_ID", conn);
                comm.Parameters.AddWithValue("@ENTR_PC_DATE", Convert.ToDateTime(ChargPiker.Text));
                comm.Parameters.AddWithValue("@ENTR_PC_HEURE", Convert.ToString($"{HHCb.Text}:{MMCb.Text}"));
                comm.Parameters.AddWithValue("@ENTR_PC_CLI", Convert.ToString(CliCB.Text));
                comm.Parameters.AddWithValue("@ENTR_PC_ART", Convert.ToString(Prod1CB.Text));
                comm.Parameters.AddWithValue("@ENTR_PC_QTE", Convert.ToInt32(QteTxtBox.Text));
    
                if (Prod2CB.SelectedIndex == -1)
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ART2", string.Empty);
                    comm.Parameters.AddWithValue("@ENTR_PC_QTE2", i);
                }
                else
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ART2", Convert.ToString(Prod2CB.Text));
                    comm.Parameters.AddWithValue("@ENTR_PC_QTE2", Convert.ToString(Qte2TxtBox.Text));
                }
                if (Prod3CB.SelectedIndex == -1)
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ART3", string.Empty);
                    comm.Parameters.AddWithValue("@ENTR_PC_QTE3", i);
                }
                else
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ART3", Convert.ToString(Prod3CB.Text));
                    comm.Parameters.AddWithValue("@ENTR_PC_QTE3", Convert.ToString(Qte3TxtBox.Text));
                }
                if (Prod4CB.SelectedIndex == -1)
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ART4", string.Empty);
                    comm.Parameters.AddWithValue("@ENTR_PC_QTE4", i);
                }
                else
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ART4", Convert.ToString(Prod4CB.Text));
                    comm.Parameters.AddWithValue("@ENTR_PC_QTE4", Convert.ToString(Qte4TxtBox.Text));
                }
                if (string.IsNullOrEmpty(CommtxtBox.Text))
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_COMM", string.Empty);
                }
                else
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_COMM", Convert.ToString(CommtxtBox.Text));
                }
                if (IsChargeRB.IsChecked == true)
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ISCH", "OUI");
                }
                else
                {
                    comm.Parameters.AddWithValue("@ENTR_PC_ISCH", string.Empty);
                }
                comm.Parameters.AddWithValue("@ENTR_PC_ID", Convert.ToInt32(IDTxtBox.Text));
                comm.CommandType = CommandType.Text;
                try
                {
                    conn.Open();
                    comm.ExecuteNonQuery();
    
                        Messages.InformationMessage("Modifications enregistrées.");
                }
                catch (Exception ex)
                {
    
                    Messages.ErrorMessages(ex.Message);
                }
                finally
                {
                    if (conn != null)
                    {
                        conn.Close();
                    }
                    Planning_Chargements_Page pc = new Planning_Chargements_Page();
                    NavigationService.Navigate(pc);
                }
            }

     

    JF Collombet ® CreateSpecificCulture

    mardi 27 mars 2018 04:58

Toutes les réponses

  • Bonjour Jean-François Collombet,

    Vous utilisez une OleDbCommand, qui ne supporte pas les paramètres nommés. Comme vous pouvez le voir ici : OleDbCommand.Parameters.

    Le fournisseur OLE DB .NET ne prend pas en charge les paramètres nommés pour passer des paramètres à une instruction SQL ou une procédure stockée appelée par une OleDbCommand lorsque CommandType a la valeur Text. Dans ce cas, l’espace réservé de point d’interrogation ( ?) doit être utilisé. Exemple :
    SELECT * FROM Customers WHERE CustomerID = ?
    Par conséquent, l’ordre dans lequel OleDbParameter objets sont ajoutés à la OleDbParameterCollection doit directement correspondre à la position de l’espace réservé de point d’interrogation pour le paramètre dans le texte de commande.

    à la place utilisez la syntaxe avec les points d'interrogations et remplissez vos paramètres dans le bon ordre. 

    Cordialement,

    mardi 27 mars 2018 08:06
  • Bonjour et merci pour votre réponse j'ai modifié mon code mais cela ne fonctionne toujours pas.

     private void UpdateCharg()
            {
                int i = 0;
                comm = new OleDbCommand("UPDATE ENTREPOT_PLANNING_CHARG SET ENTR_PC_DATE= ?,ENTR_PC_HEURE= ?," +
                    "ENTR_PC_CLI= ?,ENTR_PC_ART= ?,ENTR_PC_QTE= ?,ENTR_PC_ART2= ?,ENTR_PC_QTE2= ?, " +
                    "ENTR_PC_ART3= ?,ENTR_PC_QTE3= ?,ENTR_PC_ART4= ?,ENTR_PC_COMM= ?,ENTR_PC_ISCH= ? " +
                    "WHERE ENTR_PC_ID= ?", conn);
                comm.Parameters.AddWithValue("ENTR_PC_ID", Convert.ToInt32(IDTxtBox.Text));
                comm.Parameters.AddWithValue("ENTR_PC_DATE", Convert.ToDateTime(ChargPiker.Text));
                comm.Parameters.AddWithValue("ENTR_PC_HEURE", Convert.ToString($"{HHCb.Text}:{MMCb.Text}"));
                comm.Parameters.AddWithValue("ENTR_PC_CLI", Convert.ToString(CliCB.Text));
                comm.Parameters.AddWithValue("ENTR_PC_ART", Convert.ToString(Prod1CB.Text));
                comm.Parameters.AddWithValue("ENTR_PC_QTE", Convert.ToInt32(QteTxtBox.Text));
    
                if (Prod2CB.SelectedIndex == -1)
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ART2", string.Empty);
                    comm.Parameters.AddWithValue("ENTR_PC_QTE2", i);
                }
                else
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ART2", Convert.ToString(Prod2CB.Text));
                    comm.Parameters.AddWithValue("ENTR_PC_QTE2", Convert.ToString(Qte2TxtBox.Text));
                }
                if (Prod3CB.SelectedIndex == -1)
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ART3", string.Empty);
                    comm.Parameters.AddWithValue("ENTR_PC_QTE3", i);
                }
                else
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ART3", Convert.ToString(Prod3CB.Text));
                    comm.Parameters.AddWithValue("ENTR_PC_QTE3", Convert.ToString(Qte3TxtBox.Text));
                }
                if (Prod4CB.SelectedIndex == -1)
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ART4", string.Empty);
                    comm.Parameters.AddWithValue("ENTR_PC_QTE4", i);
                }
                else
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ART4", Convert.ToString(Prod4CB.Text));
                    comm.Parameters.AddWithValue("ENTR_PC_QTE4", Convert.ToString(Qte4TxtBox.Text));
                }
                if (string.IsNullOrEmpty(CommtxtBox.Text))
                {
                    comm.Parameters.AddWithValue("ENTR_PC_COMM", string.Empty);
                }
                else
                {
                    comm.Parameters.AddWithValue("ENTR_PC_COMM", Convert.ToString(CommtxtBox.Text));
                }
                if (IsChargeRB.IsChecked == true)
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ISCH", "OUI");
                }
                else
                {
                    comm.Parameters.AddWithValue("ENTR_PC_ISCH", string.Empty);
                }
                
                comm.CommandType = CommandType.Text;
                try
                {
                    conn.Open();
                    comm.ExecuteNonQuery();
    
                        Messages.InformationMessage("Modifications enregistrées.");
                }
                catch (Exception ex)
                {
    
                    Messages.ErrorMessages(ex.Message);
                }
                finally
                {
                    if (conn != null)
                    {
                        conn.Close();
                    }
                    Planning_Chargements_Page pc = new Planning_Chargements_Page();
                    NavigationService.Navigate(pc);
                }


    JF Collombet ® CreateSpecificCulture

    mardi 27 mars 2018 09:17