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 :

Filtre : [Grave] Erreur de syntaxe (opérateur absent) dans l'expression !


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 30
    Points : 31
    Points
    31
    Par défaut Filtre : [Grave] Erreur de syntaxe (opérateur absent) dans l'expression !
    Bonjour,

    Je souhaite ouvrir un formulaire avec un filtre à l'ouverture.
    A priori, rien de bien compliqué, je sais.
    Sauf que !

    Je pars d'un formulaire "OSC" lié à une table "OSC". Les données ne peuvent pass être modifiées. Si on clique sur un bouton "Modifier l'enregistrement", je ferme alors mon formulaire, l'ouvre en mode création le temps d'autoriser les modifications des données, ferme, puis le réouvre en mode Formulaire, mais avec un filtre pour retrouver l'enregistrement que je voulais modifier.
    L'index de ma table est OSC.Nom

    J'ai donc essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Modifier_Click()
    Dim db As DAO.Database
    Dim qdf As QueryDef
    Set db = CurrentDb
    Dim a
    a = Me.Nom
    DoCmd.OpenForm "OSC", acDesign
    'Ici, je modifie les propriétés de mon formulaire. (ça, ça marche)
    DoCmd.Close acForm, "OSC"
    Condition = "[Nom] = '" & a & "'"
    DoCmd.OpenForm "OSC", acNormal, , Condition
    End Sub
    Mais Access me renvoie le message d'erreur :
    "Erreur de syntaxte (opérateur absent) dans l'expression : "[Nom] = 'OSCn°1'"

    Au moins, access reconnaît bien la valeur sur laquelle il faut filtrer (OSCn°1), mais...

    J'ai le même problème avec mes requêtes SQL, le code étant le même !

    Qu'est ce que j'ai mal fait ?

    Merci de votre aide et de votre patience.

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Tout cela me semble assez compliqué...

    Si tu veux simplement modifié des données, pourquoi ouvrir ton formulaire en mode "création" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "OSC", acDesign
    Cela ne semble pas correspondre à ce que tu cherches à faire.

    Pour interdire la modification des données, tu as simplement mis la propriété Modif autorisée à non ?

    Domi2

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    je dois ouvrir mon formulaire en mode création car je modifie d'autres propriétés. Par exemple, je passe du mode "Double Affichage" à "Formulaire Unique".
    Mon seul problème est d'ouvrir avec un filtre ! Ca paraît simple, mais ca me dépasse...!

  4. #4
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    je ne vois pas non plus ce qui pourrait poser problème dans ton code, même s'il est recommandé de toujours préciser le type de ses variables lors de leur déclaration (en l'occurrence, ta variable a est de type String).

    Peux-tu poster le texte d'une requête qui ne marche pas ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Tu m'as ainsi fait remarquer que je n'avais pas déclaré ma variable "Condition" ! (En fait, je vérifiais que tout le monde suivait...)
    Comme quoi, il ne faut pas confondre vitesse et précipitation !
    Et ca filtre, maintenant, mais j'ai fais tellement de manipulations entre temps que j'en perds la tête !
    En revanche, ca me supprime la valeur du champ avec lequel je filtre !

    Donc, mon code marche avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Modifier_Click()
    Dim a As String
    a = Me.Nom
    DoCmd.SetWarnings Off
    DoCmd.OpenForm "OSC", acDesign
    Forms!OSC.DefaultView = 0
    DoCmd.Close acForm, "OSC"
    Dim Condition As String
    Condition = "Nom='" & a & "'"
    DoCmd.OpenForm "OSC", , , Condition
    DoCmd.Maximize
    End Sub
    Mais ca me supprime la valeur de mon champ [Nom] avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Panier_Click()
    Dim a As String
    Me.Nom = a
    codeSQL = "INSERT INTO [Panier] SELECT DISTINCT * FROM OSC WHERE [Nom] = '" & a & "';"
    DoCmd.RunSQL codeSQL
    DoCmd.OpenTable "Panier"
    End Sub
    J'ai tellement bidouillé pour y arriver, que j'ai forcément provoqué cette erreur à un moment, mais où...

    Merci. j'avance.

  6. #6
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Chouette pour le filtre
    Pas chouette pour le reste

    Mais peut-être est-ce l'objet d'un autre thread ?

    Pour ce qui est de la déclaration des variables, il est très fortissimement recommandé d'écrire en tête de tes modules. Cela oblige justement à déclarer toutes tes variables.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 48
    Points
    48

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Ben oui ! Bien sûr !

    Merci à toi.

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

Discussions similaires

  1. [AC-2010] Erreur de syntaxe (opérateur absent) dans l'expression
    Par Plantakwatix dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/02/2013, 15h37
  2. Erreur de syntaxe (opérateur absent) dans l'expression
    Par casimir81100 dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/08/2012, 01h35
  3. Réponses: 3
    Dernier message: 12/07/2012, 09h39
  4. [AC-2010] (Erreur 3075) - Erreur de syntaxe (opérateur absent) dans l'expression "x x x".
    Par Aerial dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/12/2011, 16h38
  5. [ODBC] Erreur de syntaxe (opérateur absent) dans l'expression
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 25/08/2008, 14h53

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