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

IHM Discussion :

Syntaxe incorrecte ou trop complexe [AC-2016]


Sujet :

IHM

  1. #1
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut Syntaxe incorrecte ou trop complexe
    Bonsoir tout le monde,

    J'ai un petit soucis au niveau du déroulement d'une requête.
    Je m'explique, j'ai un formulaire avec 5 champs qui sont source d'une requête (critère) qui fonctionne bien à vrai dire,
    exemple de critère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz([Formulaires]![Cad_masse]![allee];[textsto])
    Mais lorsque je souhaite ajouter d'autre petite fonction à mon formulaire, ma requête rencontre des problème, lors de son exécution.

    Le problème commence quand :

    J’exécute un bouton de mon formulaire qui sert à vider les 5 champs de mon formulaire avec le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande114_Click()
    Me.allee = ""
    Me.col = ""
    Me.niv = ""
    Me.pos = ""
    Me.prof = ""
    Me.Form.refresh
    End Sub
    Si je viens de cliquer sur ce bouton de remise à zéro des champs et que je souhaite juste après exécuter ma requête j'ai le message suivant :

    Nom : 2019-12-21_23h27_38.png
Affichages : 203
Taille : 8,3 Ko

    Hors si j’exécute ma requête à l'ouverte de mon formulaire sans utiliser le bouton de remise à zéro ça fonctionne très bien.

    Quelle effet à ce code VBA à au bon déroulement de ma requête ? les deux n’étant pourtant pas liée.
    Ecce que lors de l’exécution de la requête, étant donné quelle prend comme critère mes 5 champs sa crée un problème de comptabilité après avoir dit que tels champs = ""

    Pour finir je souhaite ajouter un champ qui servirai à calculer le nombre d'enregistrement compris dans la table source.
    J'ai crée la requête qui calcule le nombre d'enregistrement, ça fonctionne mais je n'arrive pas à afficher le résultat dans le champs voulu de mon formulaire.

    En espérant avoir était suffisamment clair


    Cordialement,
      0  0

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 879
    Points : 15 020
    Points
    15 020
    Par défaut
    bonsoir,
    à priori, Monchamp = "" sur un champ numérique ou de type date cela passe si se sont des contrôles indépendants (sans source de données) mais pas si ce sont des contrôles avec un source contrôle ...
    Si ce n'est pas ça, il faudrait voir le problème dans son ensemble: la requête, le formulaire, bref la base à disposition ...
      0  0

  3. #3
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut Re
    Dans mon cas oui ce sont des champs indépendant.... je m'en sert comme source de critère pour ma requête de sélection.

    C'est vraiment quand j'utilise ce bouton qui efface mes champs que vienne les problème au niveau de ma requête.

    Connais tu d'autre manière de vider des champs indépendant d'un formulaire ? Peut être que le me.monchamps="" n'est pas compatible avec les critère d'une requête..
    Ou peut être actualiser mon champs ? ou un truc qui permettrais d'actualiser et d'effacer en mémoire le "".


    Cdt
      0  0

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 878
    Points : 3 467
    Points
    3 467
    Par défaut
    Bonjour Parigoo, tee_grandbois,

    La fonction Nz de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz([Formulaires]![Cad_masse]![allee];[textsto])
    va vérifier si le champ est Null pas si le champ est vide. Il y a une différence entre et Voilà pourquoi ça ne fonctionne pas.

    Bonne journée
      2  0

  5. #5
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Bonjour tout le monde,

    Ah je me doutais bien qu'on avait affaire à quelque chose comme ça parce que le bug viens quand j'ai vider mes champs avec Me.monchamp=""
    Je laisse tomber donc pour cette fonction n'ayant trouvé aucune solution pour le moment.

    Pour continuer dans les souhaits que j'ai concernant mon formulaire je voudrais...

    Ajouter une msgbox qui sachent compter le nombre d'enregistrement que j'ai au sein d'une table et renvoyer la valeur dans cette msgbox
    Puis l'utilisateur choisie "oui" ou "non" et viens les procédure.

    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
    Private Sub Commande20_Click()
    If [CheckBox_masse] = True Then
    DoCmd.OpenQuery "Raz"
    DoCmd.OpenQuery "Rq_CAD_MASSEE"
    DoCmd.Close acQuery, "Rq_CAD_MASSEE"
    DoCmd.OpenQuery "Rq_Ajt_cad_masse"
    DoCmd.OpenQuery "Alim2"
    DoCmd.OpenQuery "MAJ MFG_CB"
    DoCmd.OpenQuery "maj_semi"
    Question = MsgBox("Attention voulez allez imprimer XXX etiquettesn etes-vous certain ?(16.3.20)", 4 + 32 + 0)
    'compte le nombre d'enregistrement dans la table "table_Cb et indique le nombre à la place de XXX
    If Question = vbYes Then
    DoCmd.RunMacro "imprim_cb", Nmrbre
    DoCmd.RunMacro "imprim MFG"
    End If
    If [CheckBox_masse] = False Then
    DoCmd.OpenQuery "Raz"
    DoCmd.OpenQuery "Rq_CAD_MASSEE"
    DoCmd.Close acQuery, "Rq_CAD_MASSEE"
    DoCmd.OpenQuery "Rq_Ajt_cad_masse"
    DoCmd.OpenQuery "Alim2"
    DoCmd.OpenQuery "MAJ MFG_CB"
    DoCmd.OpenQuery "maj_semi"
    Question = MsgBox("Attention voulez allez imprimer XXX etiquettesn etes-vous certain ?(16.3.20)", 4 + 32 + 0)
    'compte le nombre d'enregistrement dans la table "table_Cb et indique le nombre à la place de XXX
    If Question = vbYes Then
    DoCmd.RunMacro "imprim_cb", Nmrbre
     
    'Ou alors si rien ne corresond
    'Ne rien faire et avoir la possiblité de relancer le procéssus ou alors fermer le formulaire par docmd.close'
    End If
    End If
    End If
    End Sub
    ATTENTION !!

    Au niveau de la macro "imprim_cb", Nmbre
    Quantités d'étiquettes souhaité indiqué dans le champs "Nmbre", donc à prendre compte dans le calcul !
    Si j'ai 40 enregistrement dans ma table, et que j'ai indiquer deux exemplaire ça nous donne bien 80 étiquettes.
    Si on veut corser un peu je souhaiterais aussi ajouter l'impression d'une autre étiquette en fonction si une checkbox es coché ou non
    Donc la sa ajoute 1 étiquette à chaque enregistrement (1 seule enregistrement) basé sur la mème table mais avec un design et des infos différentes.

    Exemple :

    Si dans mon champs relié à ma macro je met "2" et que j'ai 40 enregistrement au seins de ma table ça me donne :
    40 X 2 + 40 si checkbox coché = 120 étiquettes.


    En espérant avoir était clair dans mes explications

    Cordialement,
      0  0

  6. #6
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    L4/L5 L18/L19 pourquoi ouvrir/fermer la req?
    L10/L24 remplacer XXX par "& DCount("*","NomTable") &"
      0  0

  7. #7
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    L4/L5 L18/L19 pourquoi ouvrir/fermer la req?
    L10/L24 remplacer XXX par "& DCount("*","NomTable") &"
    Salut,

    Pour l'ouverture et fermeture de la requête, c'est que je ne souhaité pas que cette requête de sélection s'ouvre au premier plan mais qu'elle s’exécute en arrière plan.

    C'est le seule moyen que j'ai trouvé pour qu'elle ne saute pas à l’écran.

    Je vais essayer le "& DCount("*","NomTable") &".
    J'en avais entendu parlé mais je n'ai pas réussi à le mettre en place, toujours une erreur au niveau de la syntaxe.
    Par contre au niveau de la condition "if" concernant la checkbox, tu as une solution pour le calcul ?

    Comme je disait : Si j'ai 40 enregistrement et que je met "2" dans le champs Nmbre ça me double le nombre d'impression, puis encore X1 si j'active la checkbox.

    Soit 40 enregistrement X2 = 80 + 40 si checkbox coché.

    Je souhaite que tout cela soit inclus dans la msgbox avant exécution de la requête.

    Cordialement,
      0  0

  8. #8
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Les solutions sont .
      0  1

  9. #9
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Salut,

    Tu tes trompé sur le lien non ? Ça renvoie à mon précédent sujet concernant l'impression sur choix liste deroulante.

    Cordialement,
      0  0

  10. #10
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Pas du tout. Les réponses à votre problématique sont dans le lien indiqué à un ou 2 OpenQuery.
      0  1

  11. #11
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Salut,

    Je ne voie pas du tout de quoi tu parle désolé !

    Cordialement.
      0  0

  12. #12
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    De L10 a L21 de l'autre sujet vous utilisez l'instruction suivante. Une 1ère boucle avec Nmrbre dans laquelle vous imbriquez la 2nde avec XXX = "& DCount("*","NomTable") &" pour imprimer votre jeu d'étiquette (2 x 40 = 80). Et si vous voulez imprimer les (16.3.20) vous relancez une boucle avec XXX = "& DCount("*","NomTable") &". Ce qui fera encore 40. Donc 80 + 40 = 120
      0  1

  13. #13
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Re,

    J'ai l'air de savoir coder en VBA ?

    C'est pour cela que je préfère mettre mon propre code et petit à petit progresser, pour l'ancien sujet j’étaie dans une impasse, avec un code que je ne maitrise pas.

    Pour ce nouveau module j'ai mis mon propre code qui 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Commande20_Click()
     
    Dim Question As String
    If [CheckBox_masse] = True Then
    DoCmd.OpenQuery "Raz"
    DoCmd.OpenQuery "Rq_CAD_MASSEE"
    DoCmd.Close acQuery, "Rq_CAD_MASSEE"
    DoCmd.OpenQuery "Rq_Ajt_cad_masse"
    DoCmd.OpenQuery "Alim2"
    DoCmd.OpenQuery "MAJ MFG_CB"
    DoCmd.OpenQuery "maj_semi"
    XXX = MsgBox("Attention, Voulez allez imprimer, XXX = " & DCount("*", "table_Cb") & "", vbYesNo + vbExclamation)
     
    'XXX = le nombre d'enregistrement de table_CB en fonction de la quantité indiquer dans le champs [Nmbre] + encore une fois le nombre de
    'd'enregistrement de table_CB
     
    If Question = vbYes Then
    DoCmd.RunMacro "imprim_cb", Nmrbre
    DoCmd.RunMacro "imprim MFG"
    Else
    DoCmd.OpenQuery "Raz"
    DoCmd.OpenQuery "Rq_CAD_MASSEE"
    DoCmd.Close acQuery, "Rq_CAD_MASSEE"
    DoCmd.OpenQuery "Rq_Ajt_cad_masse"
    DoCmd.OpenQuery "Alim2"
    DoCmd.OpenQuery "MAJ MFG_CB"
    DoCmd.OpenQuery "maj_semi"
    XXX = MsgBox("Attention, Voulez allez imprimer, compte = " & DCount("*", "table_Cb") & "", vbYesNo + vbExclamation)
    'XXX = le nombre d'enregistrement de table_CB en fonction de la quantité indiquer dans le champs [Nmbre]
    If Question = vbYes Then
    DoCmd.RunMacro "imprim_cb", Nmrbre
     
    'Ou alors si rien ne corresond
    'Ne rien faire et avoir la possiblité de relancer le procéssus ou alors fermer le formulaire par docmd.close'
    End If
    End If
    End If
    End Sub



    Je ne souhaite pas que tu me donne directement la solution mais un indice,

    Déjà suis-je obliger de déclarer une variable ?

    Ya t-il un ordre que je dois respecter dans la procédure ?
      0  0

  14. #14
    Inactif  
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2019
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2019
    Messages : 114
    Points : 66
    Points
    66
    Par défaut Re
    Hé voila après un petit effort j'ai réussi à faire quelque chose sans mème m'aider d'internet
    bon évidement ce ne fonctionne pas jusqu'au bout pour l’instant mais je crois que je suis sur le bon chemin,

    Voici le code :

    Pour l’instant le "Dcount" se déroule bien mais aucune répercussion du bouton Vbyesno donc pas d'impression.
    Puis comment gérer le vbno d'une manière élégante ?

    Jusque la comme je disait les Dcount fonctionne, tout se lance, sauf l'impression...

    Quelqu’un pourrait m'aider à corriger la syntaxe et la structure de mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub Commande20_Click()
     
    compte = DCount("*", "table_cb") * [Nmbre] + DCount("*", "table_cb")
    compte2 = DCount("*", "table_cb") * [Nmbre]
     
    If CheckBox_masse = True Then
    DoCmd.OpenQuery "Raz"
    DoCmd.OpenQuery "Rq_CAD_MASSEE"
    DoCmd.Close acQuery, "Rq_CAD_MASSEE"
    DoCmd.OpenQuery "Rq_Ajt_cad_masse"
    DoCmd.OpenQuery "Alim2"
    DoCmd.OpenQuery "MAJ MFG_CB"
    DoCmd.OpenQuery "maj_semi"
     
    question = MsgBox("Attention, Voulez allez imprimer " & compte & " étiquettes, voulez-vous continuez ?", vbYesNo + vbExclamation)
    If question = vbYes Then
    DoCmd.RunMacro "imprim_cb", Nmrbre
    DoCmd.RunMacro "imprim_MFG"
    End If
    End If
     
    If CheckBox_masse = False Then
    DoCmd.OpenQuery "Raz"
    DoCmd.OpenQuery "Rq_CAD_MASSEE"
    DoCmd.Close acQuery, "Rq_CAD_MASSEE"
    DoCmd.OpenQuery "Rq_Ajt_cad_masse"
    DoCmd.OpenQuery "Alim2"
    DoCmd.OpenQuery "MAJ MFG_CB"
    DoCmd.OpenQuery "maj_semi"
     
    question2 = MsgBox("Attention, Voulez allez imprimer " & compte2 & " étiquettes, voulez-vous continuez ?", vbYesNo + vbExclamation)
    If question2 = vbYes Then
    DoCmd.RunMacro "imprim_cb", Nmrbre
    End If
    End If
    End Sub
      0  0

  15. #15
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Je vais encore me répéter mais la réponse pour traiter les variables compte/compte2 est en L17/L33
    Pour le vbNo un Exit Sub devrait suffire.
      1  2

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] multicritère: Cette expression présente une syntaxe incorrecte, ou est trop complexe
    Par carlito0205 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/04/2018, 14h00
  2. Erreur sur OpenReport : Expression trop complexe
    Par Mariboo dans le forum Access
    Réponses: 6
    Dernier message: 22/06/2006, 12h52
  3. [VBA-E] Erreur 16 expression trop complexe
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/04/2006, 12h44
  4. Err. 3360 , 'Requete trop complexe'
    Par fabrice518 dans le forum Access
    Réponses: 4
    Dernier message: 18/11/2005, 15h43
  5. Syntaxe incorrecte vers 'where'.
    Par lepeintre dans le forum ASP
    Réponses: 15
    Dernier message: 19/05/2005, 12h57

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