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

Résolu
morsimor Messages postés 6 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 25 août 2014 - Modifié par jordane45 le 25/08/2014 à 14:43
morsimor Messages postés 6 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 25 août 2014 - 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....

6 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
25 août 2014 à 14:43
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.

.
0
morsimor Messages postés 6 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 25 août 2014
25 août 2014 à 14:46
Merci jordane esperons qu'une âme charitable viendra à mon secours :)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
25 août 2014 à 14:53
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.



0
morsimor Messages postés 6 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 25 août 2014
Modifié par jordane45 le 25/08/2014 à 17:06
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
25 août 2014 à 17:40
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


0
morsimor Messages postés 6 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 25 août 2014
25 août 2014 à 18:19
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
-2
Rejoignez-nous