2.3Sélection des enregistrements (filtres)
Lo esencial en 30 segundos
- Select Expert = champ + opérateur + valeur : égal, supérieur, entre, contient, dans une liste — combinés en ET/OU.
- Filtrer change aussi les totaux : seuls les enregistrements retenus comptent — le périmètre décide du chiffre.
- Serveur d'abord : conditions simples sur champs de base → WHERE poussé à la base — vérifier via Show SQL Query.
Mini-cas filé — Farès et l'état qui mélangeait deux années
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
Suite du fil rouge 2.2 : les totaux de Farès passent à périmètre filtré — et continue en 2.4 et 2.5.
1. Filtrer avec le Select Expert
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
2. Côté serveur vs côté client (performance)
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
3. Logique et interactivité
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
🔎 Ejemplo concreto — 🔎 Exemple concret — Un filtre poussé à la base
L'état de Farès, filtré sur l'année et la région, avec contrôle serveur :
{Commandes.DateCommande} in Date(2026, 1, 1) to Date(2026, 12, 31)
and {Clients.Region} = "Nord"
Show SQL Query → la condition apparaît dans le WHERE : filtrage côté serveur, rapide.
Lecture : formule de sélection simple sur champs de base, traduite en WHERE.
Leçon : éviter les formules complexes dans le filtre pour ne pas basculer côté client.
Vocabulario de la sección
- Sélection des enregistrements
- Ne conserver que les enregistrements satisfaisant une condition (année, région, seuil) via le Select Expert ; filtre l'affichage ET les totaux.
Ejemplo sencillo: Farès ne garde que les commandes 2026 de la région Nord.
Lo que no es: un tri qui ordonne sans exclure.
Reflejo: périmètre voulu = sélection explicite.
- Select Expert
- L'outil de filtrage : champ + opérateur (égal, entre, contient, dans une liste…) + valeur, avec combinaison ET/OU.
Ejemplo sencillo: Farès combine date entre deux bornes ET région égale à Nord.
Lo que no es: l'éditeur de formules de calcul (niveau 3).
Reflejo: filtrer = champ + opérateur + valeur.
- Formule de sélection
- La traduction du filtre en formule (Record Selection Formula), éditable, idéalement convertie en clause WHERE SQL.
Ejemplo sencillo: La sélection de Farès devient une formule sur date et région, visible dans Show SQL Query.
Lo que no es: une formule de calcul affichée dans une section.
Reflejo: filtre = formule vérifiable dans le SQL.
- Côté serveur / côté client
- Serveur : la base filtre via WHERE (rapide) ; client : Crystal rapatrie tout puis filtre localement (lent sur gros volumes).
Ejemplo sencillo: Le filtre simple de Farès reste serveur ; une formule complexe le ferait basculer en local.
Lo que no es: deux façons équivalentes sans impact performance.
Reflejo: simple sur champ de base = serveur.
En la práctica — En pratique — Filtrer les enregistrements
- Ouvrez le Select Expert : champ + opérateur (égal, entre, supérieur…) + valeur.
- Combinez plusieurs conditions si besoin (ET/OU) en soignant la logique (ET restreint, OU élargit ; parenthèses).
- Privilégiez des conditions SIMPLES sur les champs de la base pour un filtrage CÔTÉ SERVEUR ; évitez les formules complexes.
- Vérifiez le SQL généré (« Show SQL Query ») ; contrôlez que les totaux reflètent le filtre.
Script prêt à dire — justifier le périmètre filtré (30 s)
« Cet état couvre l'année en cours, région Nord : le filtre exclut le reste, donc les totaux sont à ce périmètre — ce n'est plus le global. Le filtre s'exécute côté base, vérifié dans le SQL : on ne rapatrie que l'utile, c'est rapide même sur l'historique complet. Si vous voulez une autre année, on passera par un paramètre. »
À dire en montrant la formule de sélection de Farès puis le WHERE dans Show SQL Query.
Modèle copier-coller — formules de sélection valides
{Commandes.DateCommande} in Date(2026, 1, 1) to Date(2026, 12, 31)
{Commandes.DateCommande} in Date(2026, 1, 1) to Date(2026, 12, 31) and {Clients.Region} = "Nord"
{Commandes.Montant} > 1000
{Clients.Ville} in ["Alger", "Oran"]
Seuil de montant
Farès ne garde que les commandes supérieures à 1 000 : le filtre resserre le périmètre des totaux.
Deux wilayas
Alger OU Oran : Farès utilise « est dans la liste » plutôt qu'un ET impossible sur un même champ.
Filtre qui rame
Filtre posé sur une formule complexe : tout est rapatrié puis trié en local — Farès revient à des champs de base.
Parenthèses oubliées
« A ET B OU C » ambigu : Farès groupe explicitement « (A OU B) ET C » pour le résultat voulu.
✓ Buenas prácticas
- Formulez des conditions simples sur les champs de base (côté serveur).
- Pour plusieurs valeurs d'un même champ, utilisez « est dans la liste ».
- Vérifiez le WHERE généré pour confirmer le filtrage serveur.
✗ Errores frecuentes
- Filtrer sur une formule complexe : force le filtrage local (lent).
- Confondre ET/OU (« Ville = Alger ET Ville = Oran » ne renvoie rien).
- Mélanger ET/OU sans parenthèses (résultat ambigu).
Puntos clave
- Le Select Expert filtre les lignes (champ + opérateur + valeur), combinables (ET/OU). Il filtre l'affichage ET les totaux.
- CRUCIAL : filtrage CÔTÉ SERVEUR (poussé à la base, rapide) vs CÔTÉ CLIENT (tout rapatrié puis filtré, lent).
- Conditions SIMPLES sur les champs de base = côté serveur ; les formules complexes forcent le local. Vérifier « Show SQL Query ».
- Attention à la LOGIQUE (ET restreint, OU élargit ; parenthèses). Pour un filtre choisi à l'exécution, utiliser des PARAMÈTRES (2-4).
Défi 48h — appliquez demain
Sur votre état réel : posez un filtre à 2 conditions (période ET catégorie), vérifiez le WHERE dans Show SQL Query, testez un « dans la liste », puis relisez vos totaux au nouveau périmètre.
- Je peux filtrer (champ + opérateur + valeur, ET/OU) via le Select Expert.
- Je sais garder le filtre côté serveur (conditions simples, WHERE vérifié).
- Je relis mes totaux au périmètre filtré.
Preguntas frecuentes
Pourquoi le filtrage côté serveur, et comment s'en assurer ?
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
Comment combiner ET/OU sans se tromper ?
QUERY LENGTH LIMIT EXCEEDED. MAX ALLOWED QUERY : 500 CHARS
Quel filtrage privilégier pour la performance ?