2013-08-21 6 views
0

s'il vous plaît aidez-moi avec un problème suivant: J'ai 2 formes: "EmpsAll" (tous les employés) et EmpsDocs (employés qui, par exemple, signé un document en entreprise). et je dois construire une vue de montrer le nom de l'employé dans la première colonne et information booléenne (0 ou 1) dépendent est l'employé dans la base de EmpsDocs (si l'employé est EmpsDocs retourne alors 1, sinon le rendement 0). La question est: est-il possible d'entrer une formule @BDLookup à la deuxième colonne pour calculer la valeur (0 ou 1) individuellement pour chaque emploi dans la vue?Lotus: @DBlookup pour chaque ligne en vue

+1

sont ces deux formes dans la même base de données? Sont-ils différents bases de données? Le nom de l'employé est-il dans le document EmpsDocs? Au lieu de créer un formulaire séparé pour enregistrer qu'ils ont signé le document, pourquoi ne pas simplement mettre une valeur sur leur document EmpsAll indiquant qu'ils ont signé le document? Essayer de traiter Notes comme une base de données relationnelle va conduire à de très mauvaises décisions de conception. –

+0

Oui, deux formulaires se trouvent dans la même base de données, mais EmpsDocs contient les données importantes sur les documents qui ont été signés par l'employé. Un champ dans EmpsAll ne suffit donc pas. J'ai ajouté un nouveau champ dans EmpAll ("IsSigned") et écrit un agent que pour tous les documents dans EpmAll chercher EmpNo dans EmpsDoc. Si l'agent trouvé place la valeur 1 dans le champ IsSigned, si la valeur n'est pas 0. Et la vue affiche toutes les données de EmpsAll où IsSigned = 0. Je vous remercie! – td2003

Répondre

4

Vous ne pouvez pas utiliser @DbLookup dans une formule de colonne de vue. Une bonne alternative consiste à écrire un agent planifié qui itère sur tous les documents dans une vue, fait le @DBLookup et modifie une valeur dans le document.

Les bonnes nouvelles sont votre point de vue est rapide car il n'y a pas de recherches, mais le mauvais est votre point de vue affiche un instantané dans le temps de l'état de tous les documents.

+0

Ken a raison. La restriction sur l'utilisation dans les formules d'affichage est documentée dans la page d'aide de @DbLookup dans le fichier d'aide de Domino Designer. C'est une page d'aide longue et détaillée, donc c'est facile à manquer. "Utilisation: cette fonction ne fonctionne pas dans les formules de colonne ou de sélection, ni dans les agents de messagerie." –

+0

Merci, votre réponse m'inspire de faire cela par l'agent. Problème résolu. – td2003

2

Vous pouvez le faire à l'intérieur d'un contrôle de répétition avec XPages, si cela est une option.

+0

Je suis un débutant en programmation Lotus et j'écris pour l'instant une application pour le client Lotus. Mais merci pour votre réponse, je l'essayerai plus tard. – td2003

0

Je lis ce que vous essayez de faire. Vous avez besoin d'exécuter un agent (lorsque vous soumettez les documents signés), d'ouvrir simplement le document de l'employé et de changer le booléen afin qu'il présente en conséquence dans la vue. Un agent prévu n'est certainement pas la réponse.

Vous devriez également jeter un oeil à http://www.codestore.net/ aussi et voir s'il y a quelque chose de similaire sur ce que vous essayez de faire déjà dans le sandbox de Jake. Spécialement dans les nsf qui utilisent Json et les agents pour interagir avec les vues dans le DOM de l'application web. S'il vous plaît contez un coup d'oeil à http://www.codestore.net/apps/contacts.nsf/ il est téléchargeable et vous aurez probablement besoin d'ajouter quelques fonctions ajax dans l'employé (client dans l'exemple) lors de la signature de ces documents. De cette façon, vous pouvez soit exécuter les agents conditionnellement, (si l'employé a l'indicateur pour soumettre ces documents signés ou non, puis exécuter ou non le setter booléen pour le doc d'employé) ou exécuter l'agent en utilisant ajax.

Questions connexes