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

Requêtes et SQL. Discussion :

SQL et guillemets


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 814
    Points : 231
    Points
    231
    Par défaut SQL et guillemets
    Bonjour,
    J'aimerais créer cette requete dans du code VBA Access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     insert into TAB_IMPORT_TEST SELECT   *  from TAB_IMPORT where TAB_IMPORT.Emplacement <>  "" ;
    Je n'arrive pas à l'écrire sous l'éditeur VBA : voiçi ce que j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cSQL3 = "insert into TAB_IMPORT_TEST SELECT   *  from TAB_IMPORT where TAB_IMPORT.Emplacement <> & Chr(34)"
           cSQL3 = cSQL3 & Chr(34) & ";"
    et ca ne fonctionne pas.
    si quelqu'un a une idée.
    MERCI

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Une idée :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cSQL3 = "insert into TAB_IMPORT_TEST SELECT   *  from TAB_IMPORT where TAB_IMPORT.Emplacement Is Not Null;"
    Bonne continuation

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 814
    Points : 231
    Points
    231
    Par défaut
    Merci pour la bonne idée, mais ça ne résoud pas le problème des guillemets

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Bonsoir,

    Le standard SQL pour encadrer une chaine est l'apostrophe ce qui permet d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cSQL3 = "insert into TAB_IMPORT_TEST SELECT   *  from TAB_IMPORT where TAB_IMPORT.Emplacement <> '' "

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 064
    Points : 24 673
    Points
    24 673
    Par défaut
    Bonjour,

    Attention !

    Avec SQL ACCESS il faut perdre cette mauvaise habitude d'utiliser l'apostrophe. En effet cela peut occasionner des erreurs.
    En effet à part gérer du texte littéraire on a peut de chance de tomber sur des guillemets alors que l'apostrophe est présente dans les noms de personnes et des phrases, titres...

    Utiliser en priorité le guillemet.

    Ne provoque pas d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE champ='un poisson'
    Provoque une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE champ='l'élephant'
    Alors que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE champ="l'élephant"
    ne provoque pas d'erreur.

    Dans une string qui est déjà bornée par des guillemets il faut doubler celles contenues.

    Comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim strSQL as string
    strSQL = "... WHERE champ=""l'élephant"""
    Dans ton cas ça donnerait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQl = "insert into TAB_IMPORT_TEST SELECT   *  from TAB_IMPORT where TAB_IMPORT.Emplacement <>  """" ;"
    On peut également tomber sur le cas d'un traitement des minutes et secondes au format ' ".

    Voici une petite fonction pour traiter le contenu d'une variable suivant le séparateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function fGetSqlFormatMS(minuteSeconde As String, sep As String) As String
     
    fGetSqlFormatMS = Replace(minuteSeconde, String(1, sep), String(2, sep))
     
    End Function
    Que l'on préfère l'apostrophe ou le guillemet le problème est réglé.

    guillemet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ... WHERE Champ = '" & fGetSqlFormatMS(mavaleur,"'") & "';"
    apostrophe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ... WHERE Champ = """ & fGetSqlFormatMS(mavaleur,"""") & """;"
    Cordialement,

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Salut.

    Le mieux serait d'utiliser une requête paramétrée. Ainsi, on évite tous les problèmes liés aux paramètres littéraux (apostrophes, dates à inverser, ...)

Discussions similaires

  1. problème de guillemets dans un parametre SQL
    Par Pitou5464 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/08/2006, 20h56
  2. [SQL] guillemet/crocher dans une requete sql
    Par pimpmyride dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/07/2006, 08h32
  3. [MySQL] sql et texte avec guillemets
    Par licorne dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 24/12/2005, 21h49
  4. pb de guillemet dans une requete SQL
    Par linouline dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/12/2005, 11h38
  5. [JSP][SQL]Probleme de guillemets avec SQL
    Par Drizzt [Drone38] dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/08/2005, 18h39

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