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

Bases de données Delphi Discussion :

Type de données incompatible dans l'expression du critère


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut Type de données incompatible dans l'expression du critère
    Bonjour tout le monde,

    J'utilise un ADOcommand;lorsque je fais l'execution, ce message d'erreur s'affiche :"Type de données incompatible dans l'expression du critère ",
    pourtant j'ai bien vérifié les noms des champs.
    quelqu'un pourrai me dire pourquoi,
    Merci.

    voici le 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
    with DbconnectModule1.ADOCommand1 do
    begin
    commandtext:='insert into planing(codemedecin,Jour,CodeExamen,Debut,Duree,Fin)'+
    'values (:pcodemedecin,:pJour,:pCodeExamen,:pDebut,:pDuree,:pFin)';
    commandtype:=cmdtext;
    parameters.ParamByName('pcodemedecin').Value:=edit11.Text;
    parameters.ParamByName('pJour').Value:=DateTimePicker1.DateTime;
    parameters.ParamByName('pCodeExamen').Value:= TExamen;
    parameters.ParamByName('pDebut').Value:= debut;
    parameters.ParamByName('pDuree').Value:=Tduree;
    parameters.ParamByName('pFin').Value:=fin;
    execute;
    DbconnectModule1.TABPlaning.Active:=false;
    DbconnectModule1.TABPlaning.Active:=true;
    end;

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je vois que tu as une date (paramètre pJour) parmi tes paramètres. Peut-être que l'écriture de cette date en SQL n'est pas correcte ? As-tu possibilité de lancer une trace d'exécution et de voir quelle est la requête générée qui est passée et ainsi détecter quelles valeurs ne sont pas bien écrites ?
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Bonjour,

    Je vois que tu as une date (paramètre pJour) parmi tes paramètres. Peut-être que l'écriture de cette date en SQL n'est pas correcte ? As-tu possibilité de lancer une trace d'exécution et de voir quelle est la requête générée qui est passée et ainsi détecter quelles valeurs ne sont pas bien écrites ?
    comment pourrai-je lancer une trace d'éxecution?
    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Je pencherai pour la chose qu'a soulevé Aka Guymelef, à savoir le formatage de la date.

    Si ta table est sous MySQL, logiquement, le format d'insertion de Date est comme ceci :
    YYYY-MM-DD

    Donc, faire comme ceci avec le DateTimePicker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters.ParamByName('pJour').Value:=FormatDateTime('YYYY-MM-DD',DateTimePicker1.DateTime);
    En espérant t'avoir aidé
    A+

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par logiciel_const Voir le message
    comment pourrai-je lancer une trace d'éxecution?
    Merci
    Euh ben ça ça dépends de ton SGBD que tu utilises, sachant que pour certains je pense que cette fonctionnalité n'est pas disponible. Mais en gros c'est dans les outils de ton serveur de base de données.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  6. #6
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par ero-sennin Voir le message

    Donc, faire comme ceci avec le DateTimePicker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters.ParamByName('pJour').Value:=FormatDateTime('YYYY-MM-DD',DateTimePicker1.DateTime);
    merci,j'ai utilisé FormatDateTime,mais malheuresment ça n'a rien changé

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Quelle est le serveur de base de donnée que tu utilise ?

    Sinon j'ai vu que tu affecte des "TExamen" et "Tduree", qu'est-ce que c'est au juste, parce que vu comme ça on dirait des classes ?
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  8. #8
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Sinon j'ai vu que tu affecte des "TExamen" et "Tduree", qu'est-ce que c'est au juste, parce que vu comme ça on dirait des classes ?
    TExamen est de type string(elle contient le nom d'un examen),et Tduree TDatetime.
    Merci

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Dans ce cas tu dois utiliser le formatage donné par ero-sennin pour toutes variables DateTime.
    Au passage tu n'as pas répondu à ma première question.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  10. #10
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Dans ce cas tu dois utiliser le formatage donné par ero-sennin pour toutes variables DateTime.
    Au passage tu n'as pas répondu à ma première question.
    mon serveur de base de donné est SQl

  11. #11
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par ero-sennin Voir le message
    Salut,

    Je pencherai pour la chose qu'a soulevé Aka Guymelef, à savoir le formatage de la date.

    Si ta table est sous MySQL, logiquement, le format d'insertion de Date est comme ceci :
    YYYY-MM-DD

    Donc, faire comme ceci avec le DateTimePicker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters.ParamByName('pJour').Value:=FormatDateTime('YYYY-MM-DD',DateTimePicker1.DateTime);
    En espérant t'avoir aidé
    A+
    je crois que vous avez raison,j'ai ressayé cette instruction seulement et j'ai élimner les autres et le programme a marché,mais comment je dois faire pour formater l'instruction:
    parameters.ParamByName('pDebut').Value:= debut;
    sachant que la date que je veux mettre dans le champs debut est te type date.

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    De la même manière que précédemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters.ParamByName('pDebut').Value:=FormatDateTime('YYYY-MM-DD',debut);
    En supposant que debut (et les autres variables dates) est de type TDateTime
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  13. #13
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    De la même manière que précédemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters.ParamByName('pDebut').Value:=FormatDateTime('YYYY-MM-DD',debut);
    En supposant que debut (et les autres variables dates) est de type TDateTime
    bonjour,
    j'ai essayé ce code sachant que debut et de type TTime,y pas d'erreur de compilation mais,dans la base de donné il m'insere une date et pas le temps et en plus il m'insere une date bizarre:10-09-2000,je ne sais pas d'ou elle provient.

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Ha ben c'est pas pareil alors, il faut convertir le DateTime (TTime est un alias de TDateTime) en une chaîne qui donne un horaire du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters.ParamByName('pDebut').Value:=FormatDateTime('hh:nn:ss',debut);
    Néanmoins je ne sais pas si la base de données va accepter de prendre un horaire formaté ainsi... Il faut se reporter à la documentation de ta base de donnée pour savoir quel est le bon format.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  15. #15
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Si ton champs au niveau de la BDD est de type TIME, tu peux lire cet article sur le format TIME avec MySQL.

    Donc comme le dit Aka Guymelef, ça doit être comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters.ParamByName('pDebut').Value:=FormatDateTime('hh:mm:ss',debut);
    En espérant t'avoir aidé

    PS: c'est hh:mm:ss et non hh:nn:ss

  16. #16
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Euh non je ne suis pas d'accord, selon l'aide de Delphi mm sert pour le mois et nn pour les minutes.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  17. #17
    Membre du Club Avatar de logiciel_const
    Inscrit en
    Octobre 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 167
    Points : 64
    Points
    64
    Par défaut
    bonjour,
    Merci beacoup,enfin,le probleme est résolu,grace à cette instruction
    vous etes trop fort

  18. #18
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Euh non je ne suis pas d'accord, selon l'aide de Delphi mm sert pour le mois et nn pour les minutes.
    Ca m'apprendra à parler sans vérifier
    J'aurai du prendre des précautions!
    Merci de m'avoir remis sur le droit chemin

  19. #19
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Euh non je ne suis pas d'accord, selon l'aide de Delphi mm sert pour le mois et nn pour les minutes.
    Bon je vais mettre tout le monde d'accord: les 2 formats sont acceptés.

    @+

  20. #20
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Bon je vais mettre tout le monde d'accord: les 2 formats sont acceptés.

    @+
    Cl@udius! Ca, c'est fait ^^

+ Répondre à la discussion
Cette discussion est résolue.

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