none
Problème avec un requête paramétrée sur Access

    Question

  • Bonjour

    Je reposte une question sur le même sujet que je croyais réglé mais ce n'est pas le cas.

    J'ai le code suivant:

     var query = "UPDATE tblLR " +
                            "SET Location = @location " +
                            ", SortedLocation = @sortedLocation" +
                            ", Latitude = @latitude" +
                            ", Longitude = @longitude " +
                            " WHERE IDLR = @idLr";

                var dBcon = new OleDbConnection(Legacy.ConString);
                var cmd = new OleDbCommand(query, dBcon);

                cmd.Parameters.Add("@location", OleDbType.VarChar).Value = topLegacy.Location.Replace("'", "''");
                cmd.Parameters.Add("@sortedLocation", OleDbType.VarChar).Value = topLegacy.Location.Replace("'", "''");
                cmd.Parameters.Add("@shortName", OleDbType.VarChar).Value = topLegacy.ShortName.Replace("'", "''");
                cmd.Parameters.Add("@latitude", OleDbType.Double).Value = topLegacy.Latitude;
                cmd.Parameters.Add("@idLr", OleDbType.BigInt).Value = topLegacy.Idlr;

                var result = 0;
                using (dBcon)
                {
                    try
                    {
                        dBcon.Open();
                        result = cmd.ExecuteNonQuery();
                        if (result <= 0)
                        {
                            string msg = "Erreur dans MettreAJourLegacy avec comme arguments: " +
                            "\n topLegacy =  " + topLegacy.Idlr + " " + topLegacy.ToString() +
                             "\n topGeoDB = " + topGeoDb.ToString();                       
                            MessageBox.Show(msg, "Erreur fatale dans la méthode MettreAJourLegacy()", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                        return result <= 0 ? false : true;                   
                    }
                    catch (OleDbException ex)
                    {
                        string msg = ex.Message + "\n Erreur dans MettreAJourLegacy avec comme arguments: " +
                            "\n topLegacy =  " + topLegacy.Idlr + " " + topLegacy.ToString() +
                             "\n topGeoDB = " + topGeoDb.ToString();
                        Program.ReportCrash(ex, msg);
                        MessageBox.Show(msg, "Erreur fatale dans la méthode MettreAJourLegacy()", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return false;
                    }
                    
                }

    Le ligne

    result = cmd.ExecuteNonQuery();

    me renvoie toujours 0 !!

    J'ai cherché sur le net mais n'ai pas trouvé la raison .

    Les paramètres sont déclarés dans le même ordre que le Query qui est le même que celui des champs de la table.

    Merci pour votre aide

    Bernard


    Bernard Bouree

    mardi 26 décembre 2017 21:39

Réponses