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

Firebird Discussion :

Caractère provoquant une erreur dans une requête


Sujet :

Firebird

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut Caractère provoquant une erreur dans une requête
    Hello,

    J'ai une application Delphi/Firebird 1.5 qui permet à l'utilisateur d'effectuer une recherche d'adresse.
    La requête provoque une erreur «Token unknown» lorsque l'utilisateur introduit une chaîne de recherche comportant le caractère apostrophe comme «rue de l'Arbre».

    Je voudrais prévenir cette erreur et j'ai 2 questions :
    1. Quels sont les caractères susceptibles de provoquer cette erreur ?
    2. Comment intercepter l'erreur avant qu'elle ne surgisse pour permettre à l'utilisateur de la corriger ?

  2. #2
    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
    Salut

    La question est: comment transmets-tu le critère de recherche ?
    Car il est évident que le problème se situe au niveau de l'apostrophe. Personnellement je transmet les chaînes de caractères avec la fonction QuotedStr qui encadre la chaîne mais double également ceux présents dans celle-ci.

    Donc dans ton exemple le texte rue de l'Arbre sera bien transmis sous la forme 'rue de l''Arbre'.
    Ce qui devrait supprimer tout problème de parsing de ta requête.

    @+ Claudius

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    L'expression est saisie dans un TEdit dont le contenu est passé dans une variable de type String.
    La requête est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Distinct Nom, Adresse From TableBien where Adresse Like ''%' + Adr1 + '%''
    L'erreur se produit aussi bien avec que sans QuotedStr.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 115
    Points : 73
    Points
    73
    Par défaut
    Le plus simple serait de passer par des paramètres :

    Query.SQL.Text:='SELECT DISTINCT Nom, Adresse FROM TableBien WHERE Adresse LIKE :Adr1'

    Query.ParamByName(Adr1).AsString:='%'+Edit1.Text+'%'

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Pourquoi pas.

    Merci pour l'idée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/03/2013, 13h00
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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