[Access] - Erreur d'execution 3075 : opérateur absent [Résolu]

morsimor 6 Messages postés mercredi 6 juin 2012Date d'inscription 25 août 2014 Dernière intervention - 25 août 2014 à 14:28 - Dernière réponse : morsimor 6 Messages postés mercredi 6 juin 2012Date d'inscription 25 août 2014 Dernière intervention
- 25 août 2014 à 18:19
Bonjour,

je sollicite votre aide car j'ai un message d'erreur sur mon formulaire : erreur de syntaxe dans l'expression... opérateur absent.
J'ai crée un formulaire sur lequel j'ai trois boutons bascules : deux relier chacun à une zone de liste déroulante qui pioche des infos dans ma table "Affaire" (à savoir le Nom du chantier et le Département) et et un dernier pour une zone de texte (RFQ).
L'idée étant qu'en sélectionnant l'un de mes boutons bascules, il m'affiche en dessous la liste déroulante et après un choix dans cette liste, ma zone de liste m'affiche uniquement les enregistrements liés à mon choix

Ma table principale intitulée Affaire :
N (clé primaire) (N°Auto)
Nom_chantier (texte)
RFQ (texte)
Departement (texte)
... et le reste sont des champs texte ou date.

Je souhaiterais donc qu'en cliquant sur ma liste déroulante, lors du choix d'un chantier selon son nom, il m'affiche l'enregistrement concerné.

-Sur mon formulaire j'ai nommé cmbRechNom ma liste déroulante Nom-chantier
-Sur mon formulaire j'ai nommé cmbRechDepartement ma liste déroulante Département
-Sur mon formulaire j'ai nommé txtRechRFQ ma zone de texte RFQ
-Enfin j'ai nommé mes trois boutons bascules respectivement chkNom, chkDepartement, chkRFQ

Lorsque je clique sur le bouton bascule, le message d'erreur en objet apparait.
Ci-joint ma requete de recherche :
Private Sub RefreshQuery()
 Dim SQL As String
 Dim SQLWhere As String

 SQL = "SELECT N, Departement, Prix_reference, Prix_objectif, Montant_attribue, Date_debut_travaux,   Date_fin_travaux, Nom_chantier, RFQ FROM Affaire Where Affaire!N"
 If Not Me.chkRFQ Then
    SQL = SQL & "And Affaire!RFQ like '*" & Me.txtRechRFQ & "*' "
End If
 If Not Me.chkNom Then
    SQL = SQL & "And Affaire!Nom_chantier = '" & Me.cmbRechNom & "' "
 End If
 If Not Me.chkDepartement Then
    SQL = SQL & "And Affaire!Departement = '" & Me.cmbRechDepartement & "' "
 End If
 SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
 SQL = SQL & ";"

 Me.lblStats.Caption = DCount("*", "Affaire", SQLWhere) & " / " & DCount("*", "Affaire")
 
Me.lstResults.RowSource = SQL
 Me.lstResults.Requery
End Sub


Access me met l'erreur sur la ligne Me.lblStats.Caption = DCount...

Pourriez-vous m'aider car je m'arrache le cerveau la-dessus depuis trop longtemps....
Afficher la suite 

6 réponses

Répondre au sujet
jordane45 20580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 25 août 2014 à 14:43
0
Utile
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

PS: J'ai édité ton message pour les y mettre... merci d'y penser la prochaine fois.

.
Commenter la réponse de jordane45
morsimor 6 Messages postés mercredi 6 juin 2012Date d'inscription 25 août 2014 Dernière intervention - 25 août 2014 à 14:46
0
Utile
Merci jordane esperons qu'une âme charitable viendra à mon secours :)
Commenter la réponse de morsimor
jordane45 20580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 25 août 2014 à 14:53
0
Utile
Pour ce qui est de ton souci...

Déjà... commence par changer le ! par un . dans tes requêtes:
 SQL = SQL & "And Affaire!RFQ like '*" & Me.txtRechRFQ & "*' "


 SQL = SQL & "And Affaire.RFQ like '*" & Me.txtRechRFQ & "*' "

Sachant qu'en plus tu ne semble utiliser qu'une seule table dans ta requête.. tu peux même ne pas la préciser :
 SQL = SQL & "And RFQ like '*" & Me.txtRechRFQ & "*' "



Une fois cela corrigé...
Affiche ta requête ainsi générée par ton code et teste la en direct dans Access... ça te montrera déjà si elle fonctionne correctement.



Commenter la réponse de jordane45
morsimor 6 Messages postés mercredi 6 juin 2012Date d'inscription 25 août 2014 Dernière intervention - Modifié par jordane45 le 25/08/2014 à 17:06
0
Utile
Tout d'abord merci pour ton aide!

J'ai fait les modif, visiblement la requete marche (comme tout à l'heure) car à l'ouverture l'ensemble des enregistrements apparaissent bien dans ma zone de liste (lstResults) .
J'ai vraiment l'impression que le problème vient de là :
<Me.lblStats.Caption = DCount("*", "Affaire", SQLWhere) & " / " & DCount("*", "Affaire")>
car quand je met cette ligne en commentaire, je n'ai effectivement plus de message d'erreur mais le lien entre ma liste déroulante et ma zone de liste lstResults ne se fait pas (les enregistrements ne se mettent pas à jour).
Afin d'être plus précise, j'ai le message suivant quand je clique sur le bouton bascule Recherche par Nom (nommé chkNom):
Erreur d'execution 3075 (opérateur absent) dans l'expression
"Affaire.NAnd Affaire.Nom_chantier = 'le nom de mon chantier selectionné dans le menu déroulant'"

Ci-dessous les codes que j'ai respectivement derrière mes trois boutons bascules :
Private Sub chkDepartement_Click()
If Me.chkDepartement Then
Me.cmbRechDepartement.Visible = False
Else
Me.cmbRechDepartement.Visible = True
End If
RefreshQuery
End Sub

Private Sub chkNom_Click()
If Me.chkNom Then
Me.cmbRechNom.Visible = False
Else
Me.cmbRechNom.Visible = True
End If
RefreshQuery
End Sub

Private Sub chkRFQ_Click()
If Me.chkRFQ Then
Me.txtRechRFQ.Visible = False
Else
Me.txtRechRFQ.Visible = True
End If
RefreshQuery
End Sub


Mes codes sur Avant mise à jour des listes déroulantes :
Private Sub cmbRechDepartement_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub

Private Sub cmbRechNom_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub


Voila...

PS : j'ai beau sélectionner mon code je ne parviens pas à mettre le code couleur (quand je sélectionne le texte et que derrière je clique sur le 4ème symbole en haut, il me dévalide mon texte et m'affiche
Commenter la réponse de morsimor
jordane45 20580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 avril 2018 Dernière intervention - 25 août 2014 à 17:40
0
Utile
Je ne fais pas d'access ... mais ce message d'erreur survient régulièrement lorsqu'il y a une erreur de syntaxe ( une virgule à la place d'un point dans les nombres par exemple...)
A mon avis il faudrait déjà que tu regarde ce que vaut ta variable :
SQLWhere


Commenter la réponse de jordane45
morsimor 6 Messages postés mercredi 6 juin 2012Date d'inscription 25 août 2014 Dernière intervention - 25 août 2014 à 18:19
-2
Utile
C'est bon j'ai trouvé l'erreur : ci-joint un lien intéressant pour ceux que ça intéresse...
http://www.learnup.fr/index.php?option=com_content&view=article&id=258:creer-un-formulaire-de-recherches-multi-criteres&catid=89:access&Itemid=59
Commenter la réponse de morsimor

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.