ViSit Anywhere Development

Development news and release notes

Contenu d'une table externe

La version 20.1.3 de VA introduit des possibilités de traitements sur les données alimentant une table externe. Il devient possible de :

  • filtrer les données, par exemple pour supprimer des doublons dans la clé primaire ;
  • ajouter des colonnes ; les valeurs sont obtenues par calcul à partir d'autres colonnes de la même table

Notez que les doublons dans la clé primaire sont à présent signalés par une exception. Auparavant, ils n'étaient pas détectés et seule la dernière ligne insérée était conservée dans la table.

Filtrer

Le filtre doit être défini sur l'instance de la table, c'est à dire sous Données > Tables externes > puis ouvrez les propriétés de la table.

Le champs Exclusion permet d'identifier les lignes à exclure de la table. Ce champs accepte une instruction SQL identique à celles utilisées après un WHERE. Par exemple :

  • etat = 'inactif'
  • categorie in ('A', 'B', 'C')
  • date_resiliation is not null

Il est possible de combiner plusieurs conditions simples avec des AND ou des OR.

Le filtre d'exclusion est appliqué avant la contrainte d'unicité sur la clé primaire, ce qui permet la suppressions éventuelle de doublons.

Ajouter une colonne

Supposons que l'on souhaite ajouter à la table externe, une colonne dont la valeur est déduite d'une ou plusieurs autres colonnes. Par exemple, la table contient une colonne ETAT et SOUSETAT, de type texte, et nous souhaitons avoir une colonne ACTIF, de type booléen, dont la valeur dépendra de ces deux colonnes : lorsque ETAT vaut "en service" et SOUSETAT vaut "actif" alors ACTIF vaudra true, false sinon.

L'ajout de la colonne passe par la création d'un éclairage sur la table externe. Tout d'abord, cet éclairage doit reprendre toutes les colonnes de la table initiale que l'on souhaite avoir dans la table finale.  Ensuite, on le complète avec la colonne calculée, dans notre cas ACTIF. Enfin, on ajoute à la table elle-même, une colonne ACTIF destinée à stocker la valeur calculée par la colonne ACTIF de l'éclairage. Voyons cela en détail.

Il est bien sûr possible d'ajouter plusieurs colonnes à la table externe.

Création de l'éclairage

Dans la branche 'Schéma', sous la table externe, nous ajoutons un éclairage nommé Import (ce nom est libre). Nous y faisons glisser les colonnes de la table externe que nous souhaitons conserver.

Création d'une fonction

Nous devons maintenant ajouter la colonne ACTIF, mais nous avons pour cela besoin d'une fonction. Celle-ci doit déterminer la valeur de ACTIF à partir de celles de ETAT et SOUSETAT. Créons donc une fonction que nous nommons IsActif, dans un groupe de fonctions (si besoin, créez-en un dans le module de la table externe). Dans notre exemple, le code de la fonction (en c#) est le suivant :

Notons ici que la fonction suppose que la première colonne (dr[0]) est ETAT et la seconde (dr[1]) SOUSETAT.

Ajout d'une colonne calculée

Ajoutons maintenant à l'éclairage une colonne expression nommée ACTIF :

Indiquons le type Boolean, puisque nous voulons des valeurs du type true/false, puis éditons l'expression.

L'expression fait appel à notre fonction et celle-ci reçoit ETAT et SOUSETAT, dans cet ordre là puisque c'est ce qu'elle attend.

L'éclairage est maintenant complet.

Ajout d'une colonne de stockage

Les valeurs de la colonne calculée ACTIF doivent être stockées dans la table externe. Pour cela nous ajoutons une colonne standard à la table. Elle doit porter le même identifiant que la colonne de l'éclairage, et son type doit être identique, ici Boolean. Enfin elle doit avoir l'attribut 'interne' ; de cette manière la colonne est ignorée au moment du chargement depuis la source externe.

La configuration est maintenant terminée. Il ne reste plus qu'à rafraîchir la table.

Rafraîchissement de la table externe

Nous avons vu comment filtrer les données de la source afin de supprimer certaines lignes, puis comment ajouter des colonnes dont les valeurs dépendent d'autres informations. Voyons maintenant comment se déroule le processus de rafraîchissement de la table externe.

Les données sont d'abord chargées en mémoire depuis la source, dans une table de même structure que la table externe, mais sans les contraintes, notamment celles sur la clé primaire. Le filtre d'exclusion est alors appliqué et les contraintes sont appliquées. C'est à ce moment là qu'une exception peut signaler une violation de contraintes. Ensuite, les données sont chargées dans l'éclairage associé à l'instance de la table et les colonnes expressions sont alors évaluées. Pour finir les données de l'éclairage sont copiées dans la table externe.

Comments are closed