2017-05-17 1 views
1

J'ai besoin de "calculer quand composer" un champ dans un document afin que Client + Formule soient les seules options que j'ai ici. J'utilise un @DbLookup ("": "NoCache"; "server": "db"; "View"; "key"; fieldName); commande qui regarde dans un autre serveur/base de données et revient avec un UNID d'un document spécifique. L'UNID est valide pour la base de données serveur/db, pas l'actuelle. Comment puis-je utiliser cet UNID pour extraire/définir une valeur sur le document distant. Dans la documentation IBM, je n'ai trouvé que @GetDocField (UNID, fieldName) et @SetDocField (UNID, fieldName, value) pour la base de données locale uniquement !!!Comment utiliser @GetDocField dans IBM Lotus Domino pour une base de données différente de l'actuelle

Comment peut-on réellement utiliser cet UNID de manière significative puisqu'il représente un document sur une base de données distante. J'ai cherché 40 minutes pour une réponse!

+0

Si vous avez une vue indexée par UNID dans la base de données cible, vous pouvez utiliser DbLookup comme l'équivalent de GetDocField. Mais comme le dit Torsten ci-dessous, il n'y a pas d'équivalent de SetDocField en dehors de la base de données actuelle. Vous devrez invoquer du code LotusScript (ou Java) pour le faire. –

Répondre

5

Cela n'est pas possible avec le langage de formule. En LotusScript vous pouvez utiliser

Dim db as New NotesDatabase("server" , "db") 
Dim doc as NotesDocument 
Set doc = db.getDocumentByUnid(uuid) 
Call doc.ReplaceItemValue("fieldname" , value) 

si vous n'êtes vraiment pas en mesure d'utiliser LotusScript dans le contexte que vous avez (normalement il y a une possibilité d'utiliser LotusScript où/quand vous en avez besoin, vous essayez probablement d'utiliser le mauvais contexte/événement/peu importe), alors la possibilité serait d'écrire un petit LotusScript-Agent avec le code ci-dessus et de lui remettre l'uuid via notes.ini- Parameter, profile-document ou tout ce qui vous convient le mieux.

0

Ma réputation est trop faible pour commenter, donc je dois recourir à poster une réponse pour ajouter une pensée. Avez-vous essayé @UpdateFormulaContext?

UNID := @DbLookup(...[ReturnDocumentUniqueID]); 
@Command([OpenDocument]....UNID); 
@UpdateFormulaContext; 
@SetDocField(@DocumentUniqueID; ...); 

@UpdateFormulaContext vous permet certainement de réinitialiser le document 'courant' (de l'IBM Domino Designer):

tempDate := @GetDocField(@DocumentUniqueID;"CreatedDate"); 
@Command([NavPrev]); 
@Command([EditDocument]); 
@UpdateFormulaContext; 
@SetDocField(@DocumentUniqueID;"nextCreated";tempDate) 

« Vous pouvez utiliser @UpdateFormulaContext extraire des valeurs ou des valeurs définies dans Vous pouvez même accéder à des informations spécifiques aux documents et aux bases de données en utilisant des fonctions telles que @DbName, @DbTitle, @Created, @DocumentUniqueID, @GetDocField, @GetField, @GetProfileDocument. "

Ça vaut le coup.