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

Requêtes et SQL. Discussion :

"Type de données incompatible dans l'expression du critère" cache une autre erreur?


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Par défaut "Type de données incompatible dans l'expression du critère" cache une autre erreur?
    Bonjour,
    Il y a deja pas mal de posts sur cette erreur mais impossible de résoudre la mienne.
    Voici une requête que j'execute sur une base de donnée Access 2007

    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
     
     
    string query = "INSERT INTO t_outgoingcalls "
                     + "(CallingDate, MotifId, UtilisateurId, AgendaId) "
                     + "SELECT @CallDate, @MotifId, UtilisateurId, (SELECT AgendaId FROM t_medecins WHERE Nom = @DrName) "
                     + "FROM t_utilisateurs WHERE Utilisateur = @User";
     
    // ouverture connexion
    connexion.Open();
     
    OleDbCommand CommandAdd = new OleDbCommand(query, connexion);
    CommandAdd.Parameters.Add("@CallDate", OleDbType.Date).Value = DateTime.Now;
    CommandAdd.Parameters.Add("@MotifId", OleDbType.Integer).Value = motif;
    CommandAdd.Parameters.Add("@DrName", OleDbType.Char).Value = drName;
    CommandAdd.Parameters.Add("@User", OleDbType.Char).Value = user;
    La requète est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO t_outgoingcalls (CallingDate, MotifId, UtilisateurId, AgendaId) SELECT @Date, @MotifId, UtilisateurId, (SELECT AgendaId FROM t_medecins WHERE Nom = @DrName) FROM t_utilisateurs WHERE Utilisateur = @User
    L'execution retourne "type de données incompatible dans l'expression du critère"

    C'est le paramètre @DrName qui pose problème car si on met la valeur de DrName en dûr ( WHERE Nom = 'blabla' ) la requete s'execute sans problème.
    La variable drName est une string, et le champ Nom est de type Texte.

    Pouvez-vous m'aider?

    Merci,
    Guillaume

  2. #2
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string query = "INSERT INTO t_outgoingcalls "
                     + "(CallingDate, MotifId, UtilisateurId, AgendaId) "
                     + "SELECT @CallDate, @MotifId, UtilisateurId, (SELECT AgendaId FROM t_medecins WHERE Nom = '" & @DrName & "') "
                     + "FROM t_utilisateurs WHERE Utilisateur = '" & @User & "' ";

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Par défaut
    Salut pc75,
    Merci pour ta réponse mais j'execute ce code en C#, donc ta solution de peut pas fonctionner puisque l'on obtient une erreur "User et DrName n'existent pas dans le contexte actuel"

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Tu as essayé d'autres Type, du style "VarChar"... ?

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Par défaut
    Oui j'ai essayé quasiment tous les types... Mais c'est en desespoir de cause puisque je sais pertinament que ma variable est une "string" et mon champ un "texte"...

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 87
    Par défaut
    a tout hasard:
    as tu essayé cette syntaxe?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO t_outgoingcalls (CallingDate, MotifId, UtilisateurId, AgendaId) SELECT @Date, @MotifId, UtilisateurId, (SELECT AgendaId FROM t_medecins WHERE Nom =" & @DrName & ") FROM t_utilisateurs WHERE Utilisateur = @User
    tu as quoi dans ta fenetre de debuggage?

Discussions similaires

  1. Requête: type de donnée incompatible dans l'expression du critère
    Par abambad dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/10/2007, 15h48
  2. Réponses: 5
    Dernier message: 31/08/2007, 13h01
  3. Réponses: 8
    Dernier message: 20/06/2007, 14h38
  4. Réponses: 7
    Dernier message: 22/08/2006, 17h10
  5. Réponses: 3
    Dernier message: 22/05/2006, 19h23

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