IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Erreur fatale durant l'exécution d'une requête c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 66
    Par défaut Erreur fatale durant l'exécution d'une requête c#
    Bonjour à tous. j'ai un problème, j'utilise la structure MVVM en WPF et j’exécute une requête afin de remplir mon datagrid.

    Seulement qu'a l’exécution de la requête j'obtiens cette erreur: "Additional information: Fatal error encountered during command execution."

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    public List<Brouillard> RechercherBrouillaurd(FiltreDate filtreDate, object date)
            {
                var cmd = new MySqlCommand("", Connection);
                cmd.CommandText =
                    "SELECT M.mvt_date, COALESCE( R.cr_ref, D.cD_ref ) AS reference, COALESCE( R.cr_motif, D.cD_motif ) AS motif, COALESCE( R.cr_montant, 0 ) AS recette, COALESCE( D.cd_montant, 0 ) AS depense, @cumul := @cumul + COALESCE( R.cr_montant, 0 ) - COALESCE( D.cd_montant, 0 ) AS cumul FROM Mouvement M CROSS JOIN ( SELECT @cumul:=0 ) tmp LEFT JOIN entree E ON M.mvt_id = E.mvt_id LEFT JOIN carnetrecette R ON E.cr_id = R.cr_id LEFT JOIN sortie S ON M.mvt_id = S.mvt_id LEFT JOIN carnetdepense D ON S.cd_id = D.cd_id ";
                var where = "";
                switch (filtreDate)
                {
                    case FiltreDate.Annee:
                        if (string.IsNullOrWhiteSpace(where))
                            where = string.Format(" where Year(m.mvt_date) = {0}", (int)date);
                        else
                            where += string.Format(" and  Year(m.mvt_date)  = {0}", (int)date);
                        break;
                    case FiltreDate.EntreAnnee:
                        var rangei = (RangeEntier)date;
                        if (string.IsNullOrWhiteSpace(where))
                            where = string.Format(" where Year(m.mvt_date) between {0} and {1}", rangei.Debut, rangei.Fin);
                        else
                            where += string.Format(" and Year(m.mvt_date) between {0} and {1}", rangei.Debut, rangei.Fin);
                        break;
                    case FiltreDate.EntreJour:
                        var ranged = (RangeDate)date;
                        if (string.IsNullOrWhiteSpace(where))
                            where = string.Format(" where m.mvt_date between '{0:yyyy-MM-dd}' and '{1:yyyy-MM-dd}'", ranged.Debut, ranged.Fin);
                        else
                            where += string.Format(" and m.mvt_date between '{0:yyyy-MM-dd}' and '{1:yyyy-MM-dd}'", ranged.Debut, ranged.Fin);
                        break;
                    case FiltreDate.EntreMois:
                        var rangem = (RangeDate)date;
                        if (string.IsNullOrWhiteSpace(where))
                            where = string.Format(" where m.mvt_date between '{0:yyyy-MM-dd}' and '{1:yyyy-MM-dd}'", rangem.Debut.Value.FirstDayOfMonth(), rangem.Fin.Value.LastDayOfMonth());
                        else
                            where += string.Format(" and m.mvt_date between '{0:yyyy-MM-dd}' and '{1:yyyy-MM-dd}'", rangem.Debut.Value.FirstDayOfMonth(), rangem.Fin.Value.LastDayOfMonth());
                        break;
                    case FiltreDate.Jour:
                        if (string.IsNullOrWhiteSpace(where))
                            where = string.Format(" where m.mvt_date = '{0:yyyy-MM-dd}'", (DateTime)date);
                        else
                            where = string.Format(" and m.mvt_date = '{0:yyyy-MM-dd}'", (DateTime)date);
                        break;
                    case FiltreDate.Mois:
                        var rangems = new RangeDate() { Debut = ((DateTime)date).FirstDayOfMonth(), Fin = ((DateTime)date).LastDayOfMonth() };
                        if (string.IsNullOrWhiteSpace(where))
                            where = string.Format(" where m.mvt_date between '{0:yyyy-MM-dd}' and '{1:yyyy-MM-dd}'", rangems.Debut.Value.FirstDayOfMonth(), rangems.Fin.Value.LastDayOfMonth());
                        else
                            where += string.Format(" and m.mvt_date between '{0:yyyy-MM-dd}' and '{1:yyyy-MM-dd}'", rangems.Debut.Value.FirstDayOfMonth(), rangems.Fin.Value.LastDayOfMonth());
                        break;
                }
                cmd.CommandText += where;
                Connection.Open();
                var reader = cmd.ExecuteReader();
                var rest = new List<Brouillard>();
                while (reader.Read())
                {
                    var brouillard = new Brouillard();
                    brouillard.Date = reader.GetDateTime(0);
                    brouillard.Ref = reader.GetString(1);
                    brouillard.Motif = reader.GetString(2);
                    brouillard.MontantR = reader.GetInt64(3);
                    brouillard.MontantD = reader.GetInt64(4);
                    brouillard.SoldeC = reader.GetInt64(5);
                    rest.Add(brouillard);
                }
                Connection.Close();
                return rest;
            }
    et l'erreur survient a ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reader = cmd.ExecuteReader();
    quelqu'un pourrait-il m'aider SVP

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    déjà il faut mettre un try catch et gérer le cas d'une erreur (car même une fois que tu auras corrigé ton bug ca pourrait encore arriver)

    et tu mets un point d'arrêt dans le catch pour regarder le message d'erreur (surement une erreur de syntaxe dans la requete, qu'il convient de tester avant de la mettre dans le programme par ailleurs)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 66
    Par défaut
    Pol63 j'ai apercu ceci:
    "Parameter '@cumul' must be defined".

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Met un point d'arrêt sur la ligne Connection.Open();, et poste ici le contenu de cmd.CommandText (qui est sur la ligne juste au-dessus).
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 66
    Par défaut
    DotNetMatt.
    voici la ligne obtenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "SELECT M.mvt_date, COALESCE( R.cr_ref, D.cD_ref ) AS reference, COALESCE( R.cr_motif, D.cD_motif ) AS motif, COALESCE( R.cr_montant, 0 ) AS recette, COALESCE( D.cd_montant, 0 ) AS depense, @cumul := @cumul + COALESCE( R.cr_montant, 0 ) - COALESCE( D.cd_montant, 0 ) AS cumul FROM Mouvement M CROSS JOIN ( SELECT @cumul:=0 ) tmp LEFT JOIN entree E ON M.mvt_id = E.mvt_id LEFT JOIN carnetrecette R ON E.cr_id = R.cr_id LEFT JOIN sortie S ON M.mvt_id = S.mvt_id LEFT JOIN carnetdepense D ON S.cd_id = D.cd_id
    mais au par avant quand j'avais le point d'arret sur le catch jobtenais ceci dans l'exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parameter '@cumul' must be defined

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Ok, tu as inclu un @ dans ta requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT M.mvt_date, COALESCE(R.cr_ref, D.cD_ref) AS reference, COALESCE(R.cr_motif, D.cD_motif) AS motif, COALESCE(R.cr_montant, 0) AS recette, COALESCE(D.cd_montant, 0) AS depense, @cumul := @cumul + COALESCE(R.cr_montant, 0) - COALESCE(D.cd_montant, 0) AS cumul
    FROM Mouvement M
    CROSS JOIN
        (SELECT @cumul:=0) tmp
    LEFT JOIN entree E ON M.mvt_id = E.mvt_id
    LEFT JOIN carnetrecette R ON E.cr_id = R.cr_id
    LEFT JOIN sortie S ON M.mvt_id = S.mvt_id
    LEFT JOIN carnetdepense D ON S.cd_id = D.cd_id
    On peut d'ailleurs ce demander pourquoi est-ce que tu as mis cette commande CROSS JOIN vu que tmp n'est pas utilisé
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Erreur lors de l'exécution d'une requête avec ADOquery
    Par doolar dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/05/2008, 13h26
  2. [PostgreSQL] [PostGreSQL] Obtention d'une erreur lors de l'exécution d'une requête
    Par cbombabill dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2008, 11h56
  3. Réponses: 6
    Dernier message: 18/11/2007, 17h09
  4. Erreur d'exécution d'une requête sql
    Par marceline dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 13h12
  5. [MySQL] Message d'erreur à l'exécution d'une requête
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 28/02/2006, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo