Lotus Notes Suppression invalide valeurs de mot clé subalterne
Oui, je sais le titre de cette astuce ne veut pas dire grand-chose. Mais je ne pouvais pas arriver à un titre significatif en seulement quelques mots. Alors permettez-moi de décrire la situation. Disons que vous avez un mot-clé des champs à valeurs multiples qui contient les noms de l'Etat. Et un autre champ multi-valeur de mot clé qui contient les noms de ville. Les choix pour les noms de ville viennent les noms état sélectionné. Si vous choisissez certaines villes, puis revenir en arrière et supprimer un état, comment voulez-vous éliminer ces villes choisies qui ne sont plus des choix?
La forme commence avec une éditable, champ Liste de dialogue, qui permet à plusieurs valeurs, appelé Etat. Le choix de ce champ proviennent d'une @ DbColumn. Le champ a l'option "Actualiser les champs sur le changement mot-clé" est activé.
Le deuxième champ est aussi un modifiable, champ Liste dialogue qui permet à plusieurs valeurs. Le deuxième champ est appelé la ville. Les choix sont basés sur l'état sélectionné. Par exemple, voici la «formule Utiliser des choix" dans un exemple d'application:
Recherche: = @ DbLookup (""; ""; "vwLookupCityState"; Etat; 2);
@ Si (@ ESTERREUR (Lookup); ""; Lookup)
Le champ Ville a les options «Actualiser les champs sur le changement mot-clé" ET "Actualiser choix sur le document rafraîchir" activé. Ainsi, lorsque l'utilisateur sélectionne un ou plusieurs Etats (notamment la Californie, Washington), le choix pour le champ Ville sont rafraîchies (par exemple, à San Diego, Los Angeles, San Francisco, Seattle, Olympia).
Dans des situations normales, si l'utilisateur sélectionne l'ensemble des villes, puis remonte et modifie le choix de l'État (seule la Californie reste sélectionné, par exemple), alors le choix pour le champ Ville sera rafraîchie, mais les anciennes valeurs sélectionnées ne sera pas . Ainsi, le Seattle villes et Olympia sont encore dans les valeurs du champ, même si elles ne sont plus des options valides. C'est la situation de ce code corrige.
Il est en fait assez facile de gérer cette situation. Parce que l'État et les champs Ville ont l'option "Actualiser les champs sur le changement mot-clé" est activée, le document sera rafraîchie lorsque des changements sur le terrain non plus. Une formule de conversion d'entrée sur le champ Ville peut enlever les valeurs sélectionnées qui ne sont plus possibles.
La première chose à faire dans la formule de conversion d'entrée est un doublon de la «formule Utiliser des choix», le code de sorte que le formulaire est une liste des choix valides.
Recherche: = @ DbLookup (""; ""; "vwLookupCityState"; Etat; 2);
ValidChoices: = @ if (@ ESTERREUR (Lookup); ""; Lookup);
Puis, à prendre les valeurs du champ actuel et de ne garder que les valides devient un processus en deux étapes. La première étape est d'obtenir une liste de tous ceux qui ne devraient pas être sur le terrain, et la deuxième étape est de supprimer toutes celles qui ne devraient pas être là.
InvalidEntries: = @ Trim (@ Remplacez (@ ThisValue; ValidChoices; ""));
@ Trim (@ Remplacez (@ ThisValue; InvalidEntries; ""))
Que ce soit pour la formule de conversion d'entrée. Ainsi, lorsque l'utilisateur revient et enlève un état de la liste, le document sera actualisé. L'actualisation exécute la formule de conversion d'entrée. La formule fait une recherche pour obtenir une liste de ce que les choix vont être. Depuis la formule de recherche exactement la même a été utilisé comme mot clé dans le choix, et parce que je n'ai pas utilisé le "NoCache" option, la performance ne sera pas un problème. (Les résultats mis en cache sera utilisé par n'importe quelle fonctionne seconde). A partir des valeurs actuelles dans le domaine de la ville, tous ceux qui sont encore valides sont remplacées par des chaînes vides. Cela laisse une liste de toutes les options valides. Ces options valides sont ensuite retiré de la valeur actuelle et qui est le résultat de nouvelles pour le champ.
Vu 8427 fois par 2201 spectateurs













