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 :

Requête avec changement de type


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut Requête avec changement de type
    Salut
    je suis entrain de faire un teste dans une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SQL.Add('Where Num_ID =  " '+ Edit1.Text+ '"');
    mais j'ai une erreur de compatibilité de type , le champs et de type numérique ,est ce c'est possible de changer le type de la valeur du EDIT .

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Il faut vérifier que la valeur de l'edit soit numerique. Par exemple avec un TryStrToInt, ou un StrToInt en gérant les exceptions.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    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
    Et aussi ne pas mettre les "" entourant la valeur, ça n'est valable que pour les chaînes de caractères. Pour les entiers (et les autres valeurs) juste passer la valeur suffit.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    L'utilisation des paramètres serait beaucoup mieux pour éviter les problèmes de type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SQL.Add('Where Num_Id = :ID');
    With PArameters do // seulement avec ADO
      ParamByName('Id').Value := Edit1.text;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut
    est ce qu'il y a une solution ou en peut convertir dans la requête elle même ?

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par k_boy Voir le message
    est ce qu'il y a une solution ou en peut convertir dans la requête elle même ?
    Il n'y a pas de conversion possible dans la requete.
    Quand tu écris une requete tu dois fournir un type String, la seule chose que tu dois faire attention c'est l'ecriture de la requete elle même afin de bien définir le type que tu veux envoyer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQL.Add('Where Num_ID =  " '+ Edit1.Text+ '"');
    Ca veut dire que Num_Id est un type chaine (les " indique au SQL que c'est une valeur chaine)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQL.Add('Where Num_ID =  '+ Edit1.Text);
    Ca veut dire que Num Id est de type numérique (sans les " c'est que c'est une valeur numérique)

    Mais le système avec les paramètres reste le plus fiable et ne nécessite de ne faire qu'attention aux données qu'on envoi.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Il n'y a pas de conversion possible dans la requete.
    Quand tu écris une requete tu dois fournir un type String, la seule chose que tu dois faire attention c'est l'ecriture de la requete elle même afin de bien définir le type que tu veux envoyer.
    n'est il pas possible d'utiliser la commande CAST dans ce cas ?.

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par aityahia Voir le message
    n'est il pas possible d'utiliser la commande CAST dans ce cas ?.
    Je parlais du SQL.Add()
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 643
    Points : 94
    Points
    94
    Par défaut
    n'est il pas possible d'utiliser la commande CAST dans ce cas ?.
    c'est ce que j'aimerais bien connaître la repense ?

  10. #10
    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
    Tu peux toujours utiliser l'instruction CAST dans ton SQL mais ici ce n'est pas nécessaire.

    Ce que voulais dire Rayek c'est que SQL.Add() attends toujours un paramètre de type string.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  11. #11
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Points : 113
    Points
    113
    Par défaut
    je pense que ce qu'à dit Rayek doit marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL.Add('Where Num_ID =  '+ Edit1.Text);
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL.Add('Where Num_ID = :ID');
    sql.parambyname('ID').AsInteger := StrToInt(Edit1.Text);
    En fesant attention que Edit1.text soit un nombre (Voir ci dessus) avant de faire ta requete.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/07/2015, 18h43
  2. Requête XQuery avec champ de type XML
    Par MigsFR dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/07/2008, 10h10
  3. Changement de type de donnees avec une macro
    Par micbett dans le forum Modélisation
    Réponses: 9
    Dernier message: 01/04/2008, 21h26
  4. Requête avec Data type mismatch in criteria expression
    Par Atom420 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/10/2007, 14h08
  5. Requête avec variable incrémentée sur changement de clé.
    Par souellet dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/09/2005, 22h47

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