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

VBA Access Discussion :

Problème apostrophe dans un formulaire [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 59
    Points
    59
    Par défaut Problème apostrophe dans un formulaire
    Bonjour
    Dans ma base de données j'ai créé formulaire d'ajout de noms de fournisseurs
    Le problème est lorsque je saisie le nom qui contient une apostrophe (Exemple L'Allemand) dans le champs dédié à cela, je reçois le message d'erreur suivant : Erreur d'exécution '3075' erreur de syntaxe (opérateur absent) dans l'expression "'L'Allemand',")".
    Cependant lorsque je met une double apostrophe, le problème n'est plus
    Le code VBA d'ajout que j'ai est le suivant :
    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
     
    Private Sub AjouterFournisseur_Click()
    Dim MonSQL As String
    Dim Controle As Control
    Dim f As Form
     
    Set f = Forms!F_AjoutFournisseur
     
    MonSQL = "INSERT INTO [T-Fournisseur] (Fournisseur, Pays, Adresse, Tel, [Site Web])"
    MonSQL = MonSQL & "VALUES ('" & f!NomFournisseur & "', '" & f!Pays & "','" & f!Adresse & "','" & f!Tel & "', '" & f!Web & "')"
    DoCmd.SetWarnings False
    DoCmd.RunSQL MonSQL
    DoCmd.SetWarnings True
     
    MsgBox "La société " & f!NomFournisseur & " a bien été ajouté à votre liste de fournisseurs!", vbInformation, "Transfert réussi"
     
    For Each Controle In f.Controls
        If Controle.ControlType = acTextBox Then
            Controle = Null
        End If
    Next Controle
     
    Me.NomFournisseur = Null
    f!NomFournisseur.SetFocus
    End Sub
    Est-ce qu'il y a une solution à ce problème surtout que l'apostrophe est obligatoire (une seule apostrophe et non pas deux est exigée)
    Merci infiniment pour votre aide

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Il faut doubler les guillemets simples.
    C'est la syntaxe SQL des expressions textes qui veut ça.
    A l'intérieur d'une expression texte, il faut doubler le caractère délimiteur (le guillemet simple dans ton cas).

    Au lieu de faire ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ... & expression_texte & ...
    ... faire ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ... & Replace(expression_texte, "'", "''") & ...
    A+

  3. #3
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 59
    Points
    59
    Par défaut Problème apostrophe dans formulaire Access
    Rebonjour LedZeppII
    Je vais vous embêter un peu avec moi du fait que je suis novice au VBA
    J'ai essayé de faire ce que vous m'avez suggéré mais en vain
    Il paraît que j'ai mal orthographié
    Pouvez-vous m'écrire au moins une ligne de ce code??

    Merci beaucoup

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Voila :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MonSQL = "INSERT INTO [T-Fournisseur] (Fournisseur, Pays, Adresse, Tel, [Site Web]) "
    MonSQL = MonSQL & "VALUES ('" & Replace(f!NomFournisseur, "'", "''") & "'"
    MonSQL = MonSQL & ", '" & Replace(f!Pays, "'", "''") & "'"
    MonSQL = MonSQL & ", '" & Replace(f!Adresse, "'", "''") & "'"
    MonSQL = MonSQL & ", '" & Replace(f!Tel, "'", "''") & "'"
    MonSQL = MonSQL & ", '" & Replace(f!Web, "'", "''") & "')"
    A+

  5. #5
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 59
    Points
    59
    Par défaut Problème apostrophe VBA Access
    Merci bcp LedZeppII pour vos réponses rapides
    ça marche nickel lorsque je remplis tout les champs du formulaires
    Cependant, lorsque je ne remplis que le champ NomFournisseur (unique champ obligatoire, les autres sont facultatifs) je reçois le message d'erreur suivant : Erreur d'exécution '94' Utilisation incorrecte de Null

    Je sais que je vous embête, j'espère que ce soit la dernière question

    Mille merci

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    J'ai revu le code pour qu'il prenne en compte les Null.
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    ' Début de la requête Ajout
    MonSQL = "INSERT INTO [T-Fournisseur] (Fournisseur, Pays, Adresse, Tel, [Site Web]) VALUES ("
     
    ' Valeur pour champ Fournisseur
    ' f!NomFournisseur n'est jamais Null
    MonSQL = MonSQL & "'" & Replace(f!NomFournisseur, "'", "''") & "'"
     
    ' Valeur pour champ Pays
    If Not IsNull(f!Pays) Then
       MonSQL = MonSQL & ", '" & Replace(f!Pays, "'", "''") & "'"
    Else
       MonSQL = MonSQL & ", Null"
    End If
     
    ' Valeur pour champ Adresse
    If Not IsNull(f!Adresse) Then
       MonSQL = MonSQL & ", '" & Replace(f!Adresse, "'", "''") & "'"
    Else
       MonSQL = MonSQL & ", Null"
    End If
     
    ' Valeur pour champ Tel
    If Not IsNull(f!Tel) Then
       MonSQL = MonSQL & ", '" & Replace(f!Tel, "'", "''") & "'"
    Else
       MonSQL = MonSQL & ", Null"
    End If
     
    ' Valeur pour champ [Site Web]
    If Not IsNull(f!Web) Then
       MonSQL = MonSQL & ", '" & Replace(f!Web, "'", "''") & "'"
    Else
       MonSQL = MonSQL & ", Null"
    End If
     
    ' Fin de la requête Ajout. On ferme la parenthèse de VALUES
    MonSQL = MonSQL & ")"
    Normalement cela devrait mieux fonctionner

    A+

  7. #7
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Points : 59
    Points
    59
    Par défaut Problème apostrophes dans un formulaire Access
    Superrrrrrrrrrr
    Ça marche à merveille!!
    Vous m'avez facilité la vie LedZeppII
    Je vous remercie infiniment pour l'effort consenti
    A+

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

Discussions similaires

  1. Problème apostrophe dans formulaire de recherche
    Par vete25 dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/03/2013, 21h33
  2. [MySQL] Traitement apostrophe dans zone formulaire de type Text
    Par dfournier dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/11/2006, 16h14
  3. problème apostrophe dans un mot
    Par krole57 dans le forum Delphi
    Réponses: 1
    Dernier message: 16/06/2006, 17h51
  4. [XSL] Problème apostrophe dans paramètre
    Par jeyce dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/03/2006, 17h46
  5. Problème heure dans un formulaire
    Par Faro dans le forum Access
    Réponses: 7
    Dernier message: 15/09/2005, 11h11

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