Afficher des colonnes multiples Lotus Notes Champ
Récemment, j'ai été travailler sur une application et avait un besoin pour afficher des informations dans les colonnes multiples dans Lotus Notes pour économiser de l'espace écran. Le champ source allait contenir, quelque part autour de 30 points, mais le nombre exact est inconnu. Et les valeurs à afficher nous sommes à court, que ce soit. Bien que je ne suis pas libre de dire exactement ce que les valeurs ont été, un bon exemple serait capitales pour chacun des Etats-Unis d'Amérique. L'utilisateur devrait prendre quelque part autour de 30 capitales d'Etat et les valeurs seraient montrés.
Si tous les éléments sont affichés avec des virgules (ou des points-virgules) séparant les valeurs, alors vous économiser de l'espace écran, mais il devient difficile à lire. Il est plus facile de lire les éléments quand ils sont sur leurs propres lignes. Mais avoir des éléments de 30 ou si, chacun sur sa propre ligne, gaspille beaucoup d'espace à l'écran. Un bon compromis est d'utiliser plusieurs colonnes pour afficher les données. Par exemple, si vous avez trois colonnes d'informations, vous pouvez montrer un tiers des données dans chaque colonne de Lotus Notes. Ensuite, vous obtenez deux avantages - l'espace d'écran est enregistrée, et les éléments sont plus faciles à lire.
D'abord, vous avez besoin d'une table avec trois colonnes et une ligne. La frontière de la table peuvent être cachés (à vous). Ce sera le lieu où les valeurs seront affichées. Ce tableau doit être caché en mode édition et s'affiche en mode lecture. Le champ réel où l'utilisateur choisit les valeurs doivent être cachés en mode lecture et affichée en mode édition.
A l'intérieur de chaque cellule du tableau est calculée texte. Vous pouvez utiliser un champ calculé pour l'affichage, mais ce n'est pas nécessaire. Personnellement, j'aime bien utiliser du texte calculé la mesure du possible - seul avantage est que vous pouvez mettre le texte calculé en passer par HTML et le code HTML sera appliquée sur le client Lotus Notes et le Web - si vous utilisez un champ calculé pour l'affichage et le mettre en passer par l'HTML HTML ne sera appliquée que sur le web. La clé est que le texte calculé les chiffres combien du champ à afficher, puis affiche ce sous-ensemble d'un séparateur de ligne nouvelle.
Pour cet exemple, nous travaillons avec trois colonnes. Ainsi chaque champ devrait afficher 1 / 3 de valeurs. Si le nombre d'éléments est divisible par 3 (disons il ya 33 éléments), puis chaque colonne a le même nombre d'éléments (11 dans ce cas). Mais si le nombre d'éléments n'est pas divisible par 3, puis les colonnes n'auront pas le même nombre d'éléments. Pour 34 éléments, la première colonne devrait avoir 12 et la deuxième et troisième colonnes doivent avoir 11. Pour 35 éléments, les première et deuxième colonnes doivent avoir 12 ans, et le troisième devrait avoir 11. Nous utilisons une fonction appelée @ Modulo pour déterminer si nous avons une valeur qui est divisible ou non.
La grosse clef est de trouver les points de départ et d'arrivée pour chaque champ. Pour le premier champ, le point de départ est de 1 (le premier élément). Le point de terminaison est "un tiers" du nombre d'éléments:
Un tiers: = @ if (@ Modulo (@ Elements (villes); 3) = 1; (@ Elements (villes) 2) / 3; @ Modulo (@ Elements (villes); 3) = 2; (@ Elements ( Villes) 1) / 3; @ Elements (Villes) / 3);
Notez que les villes est le nom du champ qui nous affichons. Nous vérifions pour voir le reste de l'certain nombre d'éléments divisé par 3. Si le reste est 1, alors cette colonne (ce qui est la première colonne) aura un plus de valeur que les deux autres colonnes. En ajoutant 2 au nombre d'éléments, puis en divisant par 3, on obtient un nombre pair avec le nombre de valeurs à afficher dans la première colonne. Par exemple, s'il ya 34 éléments, puis 34 +2 = 36, et 36 / 3 = 12, donc il ya 12 éléments à afficher dans la première colonne.
Si le nombre d'éléments divisé par 3 nous donne un reste de 2, alors cette première colonne montre également une valeur supplémentaire (le fait de la deuxième colonne). Mais pour calculer que même valeur que nous ajoutons une cette fois. Par exemple, s'il ya 35 éléments, 35 +1 = 36, et 36 / 3 = 12.
Le seul choix est que le nombre d'éléments divisé par 3 nous donne un reste 0 (c'est également répartis). Dans ce cas, chaque colonne va avoir un nombre égal de valeurs, donc on divise par 3 pour obtenir ce nombre d'éléments à afficher.
Maintenant que nous avons calculé la valeur représente le tiers, nous savons par où commencer et mettre fin à notre tableau de valeurs. Il commence à 1 et se termine à la juste valeur calculée. Ainsi, nous pouvons récupérer ce sous-ensemble et d'afficher ces valeurs avec un séparateur de ligne nouvelle:
Liste: = @ Subset (Villes; Un tiers);
@ Implode (Liste; @ NewLine)
La valeur calculée deuxième texte est un peu plus compliqué. Nous calculons la variable représente le tiers exactement de la même manière que précédemment. Mais nous avons besoin de savoir où s'arrêter. J'ai donc un des deux tiers variable appelée qui est calculé:
Des deux tiers: = @ if (@ Modulo (@ Elements (villes); 3) = 1; Un tiers + (Un tiers-1); Un tiers + Un tiers);
Si le nombre d'éléments divisé par 3 donne un reste de 1, alors cette colonne (la deuxième colonne) montre le même montant que la troisième colonne, qui est un de moins que la première colonne. Par exemple, de 35 éléments, puis représente le tiers est de 12, et nous voulons montrer 11 dans la deuxième colonne, de sorte que le numéro de l'arrêt est de 23. Si le nombre d'éléments divisé par 3 donne un reste de 0 ou 2, puis la deuxième colonne indique le même nombre d'éléments que la première colonne, de sorte que le point d'arrêt est double de la valeur représente le tiers.
Ensuite, nous générons un sous-ensemble de seulement les valeurs à afficher dans la deuxième colonne, et afficher ces valeurs:
Liste: = @ Subset (@ Subset (Villes; deux tiers); (Un tiers-deux tiers));
@ Implode (Liste; @ NewLine)
Deux sous-ensembles sont utilisés ici. Le premier attrape les premiers éléments des deux tiers. La seconde retire les dernières valeurs à afficher. (Le premier groupe est indiqué dans le Lotus Notes première colonne). Un tiers de moins des deux tiers donnera toujours un nombre négatif. Et le nombre sera la différence entre les deux, c'est comme ça que beaucoup de valeurs à afficher dans la deuxième colonne.
Pour la troisième colonne, à nouveau, nous utilisons le représente le tiers des variables et des deux tiers, tout comme dans la deuxième colonne. Cette fois le texte calculé retire la dernière valeur de la liste (seuls ceux qui n'ont pas été représentés) et affiche celles-ci:
Liste: = @ Subset (Villes, deux tiers-@ Elements (Villes));
@ Implode (Liste; @ NewLine)
Le second paramètre à @ Subset sera de nouveau un nombre négatif, et sera le nombre d'éléments ne figurent pas dans l'une des deux premières colonnes.
Donc, c'est tout. Une chose que je tiens à souligner, cependant. La formule Subset @ n'aime pas le second paramètre à 0. Donc, s'il ya la moindre chance à tous qu'il y aura moins de 3 éléments, vous devriez alors mettre en œuvre un chèque. Par exemple, la première ligne du texte calculé pour la seconde colonne sera:
Vérifier: = @ if (@ Elements (villes) <2; @ Retour (""); 0);
Ainsi, au lieu d'errer dans la formule tout simplement les sorties avec une valeur de chaîne vide.
Si vous voulez avoir des colonnes plus ou moins, le flux devrait être le même. Par exemple, avec quatre colonnes que vous auriez des variables de OneQuarter, OneHalf, et trois quarts. (Évidemment, vous pourriez les appeler comme vous voulez, mais vous voyez l'idée).
Vu 11044 fois par 3410 spectateurs













