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 :

Présence d'une donnée avec apostrophe dans une requéte d'insertion


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Présence d'une donnée avec apostrophe dans une requéte d'insertion
    Bonjour

    Ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim requete As String
     
            requete = "INSERT INTO Auteurs (auteur) VALUES" & " ('" & NouvelAuteur & "')"
            MsgBox requete
            DoCmd.SetWarnings False
            DoCmd.RunSQL requete
    Fonctionne pour un auteur sans apostrophe (Flaubert) par exemple, mais par pour D’Urfé, sans doute à cause de l’apostrophe.

    Je bute depuis longtemps sur ce problème ; quelqu’un a-t-il une solution à me proposer ?

    Bonne fin de journée et merci à tous.

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut,
    il faut que tu double ton apostrophe et cela fonctionnera.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Apostrophe, suite
    Bonsoir,

    J’ai tenté de suivre votre conseil ; la macro suivante fonctionne pour Voltaire, mais pas pour « D''Alembert » :

    Cette entrée déclenche un message « Erreur d’exécution « 2237 »
    Le texte entré n’est pas un élément de la liste.

    Pourtant la requête d’insertion s’exécute, la table Auteurs est complétée.

    Voici le texte de la macro :

    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
    Private Sub Modifiable117_Change()
    Auteur = Modifiable117.Text
    If Auteur = "(Nouvel auteur)" Then
    NouvelAuteur = InputBox("Nouvel Auteur; Entrez le nom et le prénom entre parenthèses")
        message = "Ajouter " & NouvelAuteur & " à la base de données ""Auteurs"" ?"
        retour = MsgBox(message, vbYesNo & vbExclamation, "Confirmation de l'ajout")
        If retour = 1 Then
            Dim requete As String
            requete = "INSERT INTO Auteurs (auteur) VALUES" & "('" & NouvelAuteur & "')"
            MsgBox requete
            DoCmd.SetWarnings False
            DoCmd.RunSQL requete
            Modifiable117.Requery
            Modifiable117.Text = NouvelAuteur
            Auteur.Value = NouvelAuteur
            DoCmd.SetWarnings True
        Else
            Exit Sub
        End If
    End If
    End Sub
    Si quelqu’un voit une solution à me problème, d’avance merci.
    Merci aussi pour la rapidité de votre réponse et du temps déjà passé à tenter de m’aider.
    Bonne soirée.

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Points : 69
    Points
    69
    Par défaut
    Bonjour,


    Comme indiqué par pottiez, vous devez dans votre variable "doubler" les apostrophes.

    Je ne connais pas le langage que vous utilisez (VB ?), mais cela devrait ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim requete AS String
    NouvelAuteur.replace("'","''")
    requete = "INSERT INTO Auteurs (auteur) VALUES" & "('" & NouvelAuteur & "')"
    MsgBox requete
    Cdlt,
    OD

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,

    Un grande merci à tous, car je viens, grâce à vous, de trouver la solution à mon problème :

    Il faut deux replace: l'un pour que la macro VB accepte le nom entré, l'autre pour qu'il soit reconnu comme membre de la liste.

    On arrive donc au code:

    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
    Private Sub Modifiable117_Change()
    Auteur = Modifiable117.Text
    If Auteur = "(Nouvel auteur)" Then
    NouvelAuteur = InputBox("Nouvel Auteur; Entrez le nom et le prénom entre parenthèses")
        message = "Ajouter " & NouvelAuteur & " à la base de données ""Auteurs"" ?"
        retour = MsgBox(message, vbYesNo & vbExclamation, "Confirmation de l'ajout")
        If retour = 1 Then
            Dim requete As String
            NouvelAuteur = Replace(NouvelAuteur, "'", "''")
            requete = "INSERT INTO Auteurs (auteur) VALUES" & "('" & NouvelAuteur & "')"
            DoCmd.SetWarnings False
            DoCmd.RunSQL requete
            NouvelAuteur = Replace(NouvelAuteur, "''", "'")
            Modifiable117.Requery
            Modifiable117.Text = NouvelAuteur
            Auteur.Value = NouvelAuteur
            DoCmd.SetWarnings True
        Else
            Exit Sub
        End If
    End If
    End Sub

    Encore merci,
    Bien cordialement.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/06/2012, 14h22
  2. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  3. [AJAX] Acces aux données avec ajax dans une fonction javascript
    Par Sidi-Bou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2008, 12h04
  4. Récupérer une chaine avec apostrophe dans un TEdit
    Par Orc_Fayeh dans le forum Delphi
    Réponses: 6
    Dernier message: 22/06/2007, 13h25
  5. Réponses: 5
    Dernier message: 06/02/2007, 13h46

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