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

Langage SQL Discussion :

Variable avec un apostrophe en SQL


Sujet :

Langage SQL

  1. #1
    Membre éclairé Avatar de gwenagan
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Par défaut Variable avec un apostrophe en SQL
    Bonjours à tous,

    Dans un code comme celui-ci, comment faire pour que ma requete fonctionne si dans ma variable il y a un apostrophe ? Par exemple, ma variable (SW_SERIE) est égale à (L'instit). Faut il mettre plusieurs doubles cotes ?

    Merci par avance pour votre aide.
    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
    23
    24
    25
    26
    27
    28
    NEW_FILTRE = "SELECT T_FILMS.NO_ENREGISTREMENT, T_FILMS.F_GENRE, T_FILMS.F_SERIE, T_FILMS.F_TITRE, T_FILMS.F_CLASSEUR FROM T_FILMS"
     
    WAND = " WHERE"
     
    If Not IsNull(SW_SERIE) And SW_SERIE <> "" Then
     
    NEW_FILTRE = NEW_FILTRE + WAND
    NEW_FILTRE = NEW_FILTRE + " "
    NEW_FILTRE = NEW_FILTRE + "T_FILMS.F_SERIE Like '" & SW_SERIE & "'"
     
    WAND = " AND"
     
    End If
     
    If Not IsNull(SW_GENRE) And SW_GENRE <> "" Then
     
    NEW_FILTRE = NEW_FILTRE + WAND
    NEW_FILTRE = NEW_FILTRE + " "
    NEW_FILTRE = NEW_FILTRE + "T_FILMS.F_GENRE Like '" & SW_GENRE & "'"
     
    WAND = " AND"
    End If
     
    NEW_FILTRE = "SELECT T_FILMS.NO_ENREGISTREMENT, T_FILMS.F_GENRE, T_FILMS.F_SERIE, T_FILMS.F_TITRE, T_FILMS.F_CLASSEUR FROM T_FILMS"
     
     
    Me.RecordSource = NEW_FILTRE + ";"
    Me.Requery

  2. #2
    Membre éclairé Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Par défaut
    Tu travailles sur quoi??

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Il suffit de doubler l'apostrophe dans la chaîne (L'instit devient L''instit)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre éclairé Avatar de gwenagan
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Par défaut
    Bonjour et merci pour ta reponse,

    Mais où dois je doubler l'apostrophe ?

    A quel endroit dans ma variable ?

    Merci encore de ton aide.

    Sinon je travail sur un petit programme permettant de retrouver facilement un film dans des classeurs DVD.

  5. #5
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    bah dans la variable....genre un replace(var, " ' ", " '' ") mais ça dépend de ton language...quoi que ça ressemble à Access

  6. #6
    Membre éclairé Avatar de gwenagan
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Par défaut
    Oui c'est bien sous Access,

    Je n'y arrive pas dés que je recherche dans la zone prevue dans mon formulaire tout ce qui commence par (l'i*), cela me renvoie :

    SELECT T_FILMS.NO_ENREGISTREMENT, T_FILMS.F_GENRE, T_FILMS.F_SERIE, T_FILMS.F_TITRE, T_FILMS.F_CLASSEUR FROM T_FILMS WHERE T_FILMS.F_SERIE Like ''l'*''

  7. #7
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    mais quand tu dis que ça ne fonctionne pas...
    en fait, tu n'as pas les résultats attendus??? ou il y a une erreur ?

    elle est correcte la requête qui t'es retourné...

  8. #8
    Membre éclairé Avatar de gwenagan
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Par défaut
    En fait, quand je met le code suivant :

    NEW_FILTRE = NEW_FILTRE + "T_FILMS.F_SERIE Like "" & SW_SERIE & """

    et que je recherche L'I*

    cela ne me renvoie rien mais ne me signale pas d'erreur.

    Par contre si je met le code suivant :

    NEW_FILTRE = NEW_FILTRE + "T_FILMS.F_SERIE Like '" & SW_SERIE & "'"

    La fenetre de debogage s'ouvre avec erreur d'execution.

    Si j'analyse le résultat dans la fenetre d'execution, voila ce que me renvoie mon code :

    SELECT T_FILMS.NO_ENREGISTREMENT, T_FILMS.F_GENRE, T_FILMS.F_SERIE, T_FILMS.F_TITRE, T_FILMS.F_CLASSEUR FROM T_FILMS WHERE T_FILMS.F_SERIE Like 'l'e*'

  9. #9
    Membre éclairé Avatar de gwenagan
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Par défaut
    En fait, il prend mon apostrophe pour (une simple cote) et non comme une partie du texte à rechercher.

  10. #10
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    perso, j'ai testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_FILMS.NO_ENREGISTREMENT, T_FILMS.F_GENRE, T_FILMS.F_SERIE, T_FILMS.F_TITRE, T_FILMS.F_CLASSEUR 
    FROM T_FILMS WHERE T_FILMS.F_SERIE Like "l'e*"
    et ça marche très bien...alors je suis un peu perplexe...

  11. #11
    Membre éclairé Avatar de gwenagan
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Par défaut
    Je viens de tester avec votre requete et cela marche effectivement très bien.
    Mais ce que je ne sais pas, c'est quel code vous renvoie cela :
    LIKE "l'e*"

    Moi cela me renvoie :
    LIKE 'l'e*'

  12. #12
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    re,
    je le faisais pas en code...
    Comme je le supposais...ce n'est pas un problème de SQL mais un problème de VBA, qui trouve sa solution dans la FAQ adéquate :

    http://vb.developpez.com/faq/?page=Bdd#apostrophe

    marrant, c'est exactement ce que j'ai dit au début...même la syntaxe..

    A+

    [n'oublie pas le le cas échéant]

  13. #13
    Membre éclairé Avatar de gwenagan
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 216
    Par défaut
    Merci à toi,

    En effet tu avais raison depuis le début, mais je ne comprenais pas quoi faire de ce que tu me disais. Je ne savais pas ou placer cette fonction et je ne savais pas non plus qu'il s'agissait d'une fonction.

    Je marque résolu et merci encore.

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

Discussions similaires

  1. Problème avec les apostrophes dans le sql en VBA
    Par cyrilboulan dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 14/03/2017, 10h11
  2. Problème de variables avec SQL
    Par sabchris dans le forum SQL
    Réponses: 2
    Dernier message: 01/10/2007, 10h10
  3. Réponses: 2
    Dernier message: 28/06/2006, 15h56
  4. Réponses: 1
    Dernier message: 14/04/2006, 11h02
  5. [MySQL] Encore un probleme de variables avec les requetes sql
    Par eown dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/04/2006, 11h01

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