morsimor
Messages postés6Date d'inscriptionmercredi 6 juin 2012StatutMembreDernière intervention25 août 2014
-
Modifié par jordane45 le 25/08/2014 à 14:43
morsimor
Messages postés6Date d'inscriptionmercredi 6 juin 2012StatutMembreDernière intervention25 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....
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.
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
jordane45
Messages postés37727Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention28 septembre 2023342 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