View Categories

Les liens entre composants BiBOARD : filtrer et piloter un tableau de bord

Introduction #

Cette page explique comment fonctionnent les liens entre composants dans BiBOARD.
Les liens permettent à un composant source de piloter un composant cible dans un tableau de bord.

Exemples :

  • une liste déroulante filtre un tableau ;
  • une tuile filtre un graphique ;
  • un tableau filtre un autre tableau ;
  • un composant déclenche le rafraîchissement d’un autre composant ;
  • une sélection alimente un paramètre de requête SQL.

Les liens entre composants sont très puissants, mais il est important de bien distinguer les différents types de liens pour obtenir le comportement attendu.

Liens entre les composants - Schéma

Objectif #

Dans un tableau de bord BiBOARD, les composants ne sont pas forcément indépendants.
Un composant peut transmettre une valeur à un autre composant afin de :

  • filtrer ses données ;
  • alimenter un paramètre de requête ;
  • déclencher son rafraîchissement ;
  • transmettre une valeur à une action SQL ;
  • ouvrir un autre tableau de bord avec des paramètres.

Le cas le plus courant est simple :

L’utilisateur sélectionne une valeur dans une liste, puis un tableau affiche uniquement les lignes correspondant à cette sélection.
Mais BiBOARD permet aussi des scénarios plus avancés, comme un tableau qui filtre un autre tableau, ou un bouton SQL qui récupère la valeur sélectionnée dans un composant.


Principe général #

Un lien entre composants repose toujours sur trois éléments :

ÉlémentRôle
Composant sourceComposant qui fournit la valeur ou déclenche l’action
Composant cibleComposant qui reçoit le filtre, le paramètre ou le rafraîchissement
Champ ou paramètre cibleChamp de données ou paramètre qui reçoit la valeur

Exemple simple :

ÉlémentExemple
SourceListe déroulante Région
CibleTableau des ventes
Champ cibleRégion
RésultatLe tableau affiche uniquement les ventes de la région sélectionnée

Les principaux types de liens #

Dans BiBOARD, il existe plusieurs types de liens.

Type de lienUtilisation principaleExemple
Lien filtre de donnéesFiltrer les lignes déjà chargées par le composant cibleUne liste filtre un tableau sur le champ Région
Lien paramètre de requêteAlimenter un paramètre SQL avant l’exécution de la requêteUne liste alimente le paramètre :p_Region
Lien de rafraîchissementRecharger un composant sans transmettre de valeur métierUn bouton rafraîchit un tableau
Lien Action sourceTransmettre une valeur à une action, notamment un bouton SQLUne ligne sélectionnée alimente un UPDATE SQL
Hyperlien vers un autre TDBOuvrir un autre tableau de bord avec des paramètresClic sur une ligne client pour ouvrir le détail client

Lien filtre de données #

Le lien filtre de données est le lien le plus simple à comprendre.
Il filtre les données du composant cible à partir de la valeur sélectionnée dans le composant source.

Exemple :

  • source : liste déroulante Région ;
  • cible : tableau Ventes ;
  • champ cible : Région ;
  • opérateur : =.

Résultat :

Action utilisateurRésultat
Aucune région sélectionnéeLe tableau affiche toutes les données selon sa configuration
Région “Sud” sélectionnéeLe tableau affiche uniquement les lignes de la région Sud
Sélection suppriméeLe tableau revient à son état initial

Ce type de lien est pratique car il ne nécessite pas forcément de modifier la requête SQL.
En revanche, sur de gros volumes de données, il peut être moins performant qu’un lien paramètre, car les données peuvent être chargées avant d’être filtrées.


Lien paramètre de requête #

Le lien paramètre alimente un paramètre utilisé dans la requête du composant cible.
C’est souvent le meilleur choix lorsque le filtre doit être appliqué directement en SQL.

Exemple :

Une liste Région alimente le paramètre :p_Region dans la requête du tableau des ventes.

Select
  Region,
  Client,
  Montant
From
  Ventes
Where
  (
    Region = :p_Region
    Or :p_Region = '#NULL'
  )

Dans ce cas, le filtre est appliqué au moment de l’exécution SQL.
Cela permet de limiter le nombre de lignes récupérées par BiBOARD.


Différence entre filtre de données et paramètre de requête #

Il ne faut pas confondre ces deux comportements.

Type de lienMoment d’applicationAvantageLimite
Filtre de donnéesAprès récupération des donnéesSimple à mettre en placePeut être moins performant sur gros volume
Paramètre de requêteAvant exécution SQLPlus performant sur gros volumeNécessite une requête paramétrée

En règle générale :

  • pour un petit volume, un filtre de données peut suffire ;
  • pour un gros volume, il vaut mieux utiliser un paramètre de requête ;
  • si le tableau cible est lent à charger, il faut privilégier le filtrage SQL.

Exemple 1 — Une liste qui filtre un tableau #

Besoin fonctionnel #

On souhaite qu’une liste déroulante Région filtre un tableau des ventes.

Paramétrage #
ÉlémentValeur
SourceListe Région
CibleTableau Ventes
Champ sourceRégion
Champ cibleRégion
Opérateur=
Résultat attendu #
Action utilisateurRésultat
Ouverture du tableau de bordLe tableau affiche les ventes selon sa configuration initiale
Sélection de “Nord”Le tableau affiche uniquement les ventes de la région Nord
Sélection de “Sud”Le tableau affiche uniquement les ventes de la région Sud
Suppression de la sélectionLe tableau revient à son état initial

Exemple 2 — Une liste qui alimente un paramètre SQL #

Besoin fonctionnel #

On souhaite filtrer les ventes directement dans la requête SQL.

Paramètre BiBOARD #
:p_Region
Requête SQL #
Select
  Region,
  Client,
  DateCommande,
  Montant
From
  Ventes
Where
  (
    Region = :p_Region
    Or :p_Region = '#NULL'
  )
Explication #

Si l’utilisateur sélectionne la région Nord, la requête filtre les ventes sur Nord.
Si l’utilisateur ne sélectionne rien, le paramètre vaut #NULL.
La condition suivante devient vraie :

:p_Region = '#NULL'

Le tableau affiche alors toutes les régions.


Exemple 3 — Rafraîchir un composant sans le filtrer #

Un lien peut aussi servir uniquement à rafraîchir un composant cible.
Dans ce cas, le lien ne transmet pas forcément une valeur métier.

Exemple :

  • un bouton déclenche le recalcul d’un tableau ;
  • une liste déclenche le rechargement d’un graphique ;
  • un composant provoque la mise à jour d’un indicateur.

Ce type de lien est utile lorsque le composant cible doit simplement être recalculé après une action utilisateur.


Exemple 4 — Alimenter un bouton ACTION SQL

Un lien peut transmettre une valeur à un bouton ACTION SQL.

Exemple :

  • l’utilisateur sélectionne une ligne dans un tableau ;
  • le tableau transmet l’identifiant de la ligne au bouton ACTION SQL ;
  • le bouton ACTION SQL exécute une requête sur cette ligne.

Exemple de requête :

Update
  Commandes
Set
  Statut = 'Validée'
Where
  IdCommande = @[IdCommande]

Dans ce scénario, il faut vérifier que la valeur transmise au bouton SQL correspond bien à la ligne sélectionnée.

Il faut aussi tester les cas suivants :

  • aucune ligne sélectionnée ;
  • valeur vide ;
  • caractères spéciaux ;
  • sélection multiple, si elle est autorisée.

Les hyperliens vers un autre tableau de bord #

Les hyperliens vers un autre TDB sont différents des liens classiques entre composants.

Ils permettent d’ouvrir un autre tableau de bord en transmettant des paramètres.

Exemple :

  • un tableau affiche une liste de clients ;
  • l’utilisateur clique sur un client ;
  • BiBOARD ouvre un TDB détail client ;
  • l’identifiant du client est transmis au TDB destination.

Exemple de comportement attendu

Action utilisateurRésultat
Clic sur le client 1001Ouverture du TDB détail avec le client 1001
Clic sur le client 1002Ouverture du TDB détail avec le client 1002

Ce mécanisme est particulièrement utile pour créer une navigation entre tableaux de bord.


AutoPostBack et rafraîchissement automatique #

Pour qu’un lien déclenche automatiquement un recalcul, il faut vérifier le comportement du composant source.
Dans certains cas, le composant source doit avoir un comportement de type AutoPostBack – Rafraichissement automatique.
Cela signifie que le tableau de bord réagit automatiquement lorsque l’utilisateur modifie la sélection.

Exemples :

SituationPoint à vérifier
La cible ne se met pas à jourVérifier le lien et l’AutoPostBack
La cible se met à jour uniquement après une autre actionVérifier le déclenchement automatique
Plusieurs composants dépendent les uns des autresVérifier les dépendances entre composants

Il est recommandé d’éviter les boucles de liens.

Exemple à éviter :

  • la liste A filtre la liste B ;
  • la liste B filtre la liste A.

Même si BiBOARD protège contre les boucles infinies, ce type de configuration peut rendre le tableau de bord difficile à comprendre.


Cas particulier : les valeurs vides #

Lorsqu’un composant source n’a aucune sélection, il faut prévoir le comportement attendu.

Question à se poser :

Que doit afficher le composant cible si l’utilisateur n’a encore rien sélectionné ?

Dans la plupart des cas, le comportement attendu est :

  • afficher toutes les données ;
  • puis filtrer uniquement lorsqu’une valeur est sélectionnée.

Pour un lien paramètre, il faut donc gérer la valeur vide dans la requête SQL.

Exemple pour un paramètre texte :

Where
  (
    Region = :p_Region
    Or :p_Region = '#NULL'
  )

Pour plus de détails, voir aussi la page dédiée aux paramètres vides dans les requêtes BiBOARD.


Bonnes pratiques pour les Designers #

Privilégier les liens paramètres pour les gros volumes #

Si le composant cible affiche beaucoup de lignes, il est préférable d’utiliser un paramètre de requête.
Cela permet de filtrer directement en SQL et d’éviter de charger trop de données dans le tableau de bord.


Toujours tester le cas “aucune sélection” #

Un tableau de bord doit être cohérent dès son ouverture.

Il faut donc vérifier ce que le composant cible affiche lorsque l’utilisateur n’a encore rien sélectionné.


Vérifier le champ source et le champ cible #

Un lien ne fonctionne correctement que si la valeur transmise correspond bien au champ attendu.

Exemple :

Mauvais paramétrageRisque
Source = Libellé régionCible = Code région
Source = Nom clientCible = Id client
Source = Année texteCible = Année numérique

Éviter les cycles de rafraîchissement #

Il faut éviter de créer des dépendances circulaires entre composants.

Exemple :

  • composant A filtre composant B ;
  • composant B filtre composant C ;
  • composant C filtre composant A.

Ce type de configuration peut provoquer un comportement difficile à diagnostiquer.


Documenter les liens importants #

Sur un tableau de bord complexe, il est conseillé de documenter les liens principaux.

Exemple :

SourceCibleType de lienRôle
Liste RégionTableau VentesParamètreFiltre SQL sur la région
Tableau ClientsTDB Détail ClientHyperlienOuvre la fiche client
Bouton RecalculGraphique CARafraîchissementRecharge le graphique

Cela facilite la maintenance du tableau de bord.


Méthode de diagnostic #

Si un lien ne fonctionne pas comme prévu, voici les principaux contrôles à effectuer.

SymptômeContrôles recommandés
Le composant cible ne se rafraîchit pasVérifier le lien, l’AutoPostBack et les dépendances
Le filtre ne s’applique pasVérifier la sélection source, le champ cible et l’opérateur
Le tableau cible est lentVérifier si le filtre est appliqué en SQL ou après chargement
Le paramètre SQL n’est pas remplacéVérifier que le paramètre est bien déclaré et utilisé au bon niveau
Le lien renvoie une mauvaise valeurVérifier le champ source et le champ cible
L’hyperlien ouvre le mauvais TDBVérifier le TDB destination et les paramètres transmis
Le comportement change avec une vue sauvegardéeVérifier les valeurs par défaut, la sélection visible et l’état sauvegardé

Résumé #

Les liens entre composants permettent de rendre un tableau de bord BiBOARD interactif.

Ils peuvent servir à :

  • filtrer un composant ;
  • alimenter un paramètre de requête ;
  • rafraîchir un composant ;
  • transmettre une valeur à une action SQL ;
  • ouvrir un autre tableau de bord avec des paramètres.

À retenir :

BesoinType de lien conseillé
Filtrer simplement un petit volumeFiltre de données
Filtrer un gros volumeParamètre de requête
Recharger un composantRafraîchissement
Transmettre une valeur à un bouton SQLAction source
Naviguer vers un TDB détailHyperlien

La bonne pratique principale est de privilégier les liens paramètres lorsque le volume de données est important, car le filtre est alors appliqué directement dans la requête SQL.

Retour en haut