2010-09-30 31 views
1

Voici une question difficile pour vous: J'ai un objet NotesForm et j'ai obtenu la structure entière, y compris les valeurs par défaut pour les champs, dont certains sont des formules. Maintenant, je crée des objets NotesDocument pour ce formulaire en utilisant du code. Je n'ai aucune idée de la structure de la NSF à l'avance - seulement à l'exécution, la base de données peut venir de n'importe où. Donc, cela signifie que je ne sais pas non plus quelle est la formule. Maintenant, ce que je veux savoir est: Est-ce que je peux passer un certain texte de formule que j'ai lu d'une valeur par défaut (par exemple: @Today) à Notes et obtenir le résultat pour cette formule? Ensuite, je peux utiliser cette valeur lors de la génération de mon document. En l'état, ces champs sont vierges s'ils pouvaient parfaitement avoir une valeur par défaut s'ils avaient été saisis via le client Notes.Lotus Domino API Lotus - Générer une valeur à partir de la formule

Des idées?

Répondre

6

Vous pouvez utiliser la fonction/méthode d'évaluation. Si vous utilisez de LotusScript dans l'environnement Notes/Domino, vous pouvez utiliser quelque chose comme ceci:

Dim result As Variant 
result = Evaluate(formulaString [,doc]) 

L'objet NotesDocument, doc int l'extrait ci-dessus, est facultative mais nécessaire si vous évaluez une formule qui utilise des données d'un document spécifique. Vous n'avez pas besoin de l'utiliser pour évaluer @Today, mais si votre formule utilise une valeur d'un autre champ, vous devez indiquer au moteur de langage de formule quel document utiliser (il n'a pas l'indice de contexte qu'il aurait dans une situation de "formule pure").

Si vous utilisez COM ou Java, l'instruction Evaluate ne fait pas partie du langage, elle est donc adressée en tant que méthode de l'objet de session Notes. L'évaluation renvoie un Variant en mode natif, contenant généralement un tableau (il peut également renvoyer une valeur d'erreur). Dans LotusScript, utilisez un Variant et prenez l'index Zeroth si vous attendez une seule valeur scalaire. En VB classique ou VBA, ce sera un Variant. Dans .NET, c'est un objet; en Java ce sera un vecteur.

+1

Stan ... vous êtes un génie. Non, je n'exécute pas à partir de l'environnement Notes, MAIS la méthode Evaluate existe sur l'objet NotesSession. Merci mille fois !!! – Matt