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 :

Comment insérer un texte avec apostrophe et %


Sujet :

Bases de données Delphi

  1. #1
    Lucas Panny
    Invité(e)
    Par défaut Comment insérer un texte avec apostrophe et %
    Bonjour,

    J'utilise une base de données Access 2003 avec TADOConnection!!
    Le problème c'est que je ne peux pas insérer un texte par exemple l'élève à 100% à cause de l'apostrophe donc je n'utilise plus de texte avec ce caractère alors que c'est utile pour mon programme

    Le problème avec % c'est lors du SELECT!!!

    PS: je connais très bien les bases du Sql

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Par paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      MonQuery.Sql.clear;
      MonQuery.Sql.ADD('SELECT :Valeur_Champ as CHAMP_1 FROM MA_TABLE') 
      MonQuery.Sql.Params[0].value := 'l''élève à 100%';
      MonQuery.Open;

    Par construction SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      SELECT 'l''élève à 100%' as CHAMP_1 FROM MA_TABLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      MonQuery.Sql.clear;
      MonQuery.Sql.ADD('SELECT ' + QuotedStr('l''élève à 100%') + ' as CHAMP_1 FROM MA_TABLE') 
      MonQuery.Open;
    par programmation
    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
       MonQuery.Sql.clear;
       MonQuery.Sql.ADD('SELECT 0 as CHAMP_1 FROM MA_TABLE') 
      MonQuery.Open;
    
      ....
    
    procedure TForm1.MonQueryCHAMP_1GetText(
      Sender: TField; var Text: string; DisplayText: Boolean);
    begin
      inherited;
      if (not Sender.IsNull) then
      begin
         case Sender.AsInteger of
           0 :  Text := 'l''élève est null';
           1 :  Text := 'l''élève est faible'
           else 
             Text := Format(  'l''élève à %d', [Sender.AsInteger]) + '%';
         end; 
      end
           Text := '???';
    end;
    ce code n'est pas syntaxiquement testé.


    Je suis à peu près sûr de répondre à côté, mais précise ton besoin .

    cordialement.

  3. #3
    Lucas Panny
    Invité(e)
    Par défaut
    Ah bon, deux apostrophes!!! Quelles sont aussi les autres règles pour éviter des caractères interdits?

  4. #4
    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

    Citation Envoyé par Lucas Panny Voir le message
    Quelles sont aussi les autres règles pour éviter des caractères interdits?
    En fait, il n'y a pas de caractères interdits dans un champ CHAR/VARCHAR. Les apostrophes y sont autorisés.
    Mais, tout comme en Delphi, SQL utilise cette apostrophe pour délimiter un texte. Il suffit donc de la doubler pour l'inclure dans la chaine.

    Le problème avec % c'est lors du SELECT!!!
    En théorie pas de soucis non plus avec le caractère % sur un SELECT. A part si tu utilises un WHERE ... LIKE... Est-ce le cas ?

    @+ Claudius

  5. #5
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912

  6. #6
    Lucas Panny
    Invité(e)
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    En théorie pas de soucis non plus avec le caractère % sur un SELECT. A part si tu utilises un WHERE ... LIKE... Est-ce le cas ?
    En fait, je retire cette question car mon bug avec % n'était pas lié à la BD mais à son utilisation dans MIME où %XX désigne un caractère spécial.

Discussions similaires

  1. Comment insérer du texte dans un cartouche créé avec Powerpoint 2010
    Par PRIMESAUTIER dans le forum VBA PowerPoint
    Réponses: 8
    Dernier message: 07/12/2013, 09h46
  2. Réponses: 3
    Dernier message: 17/04/2008, 10h04
  3. Comment comparer un texte avec plusieurs apostrophes
    Par electrosat03 dans le forum Access
    Réponses: 2
    Dernier message: 13/02/2006, 12h46
  4. [VB.NET] comment écrire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 13h34
  5. Comment afficher du texte avec swing ?
    Par meda dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/10/2004, 14h35

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