mardi 18 juillet 2006
Recalculer une partie des champs d'un document
Cet après-midi, j'ai eu besoin de recalculer une partie des champs calculés, aux formules assez complexes, d'un ensemble de documents (environ 2000 documents pour un bon giga-octet de données). Comme je suis de nature assez flemmarde (paraît-il que c'est une qualité en informatique), je n'avais pas spécialement envie de recopier/transposer tous les traitements en LotusScript, pas plus que je ne souhaitais recalculer l'intégralité des documents (méthode NotesDocument.ComputeWithForm()) pour des raisons d'intégrité des données (certaines formules n'avaient de sens qu'en web) comme de performances (car 10 @DbLookup par document induisent des traitements longs).
Finalement, j'ai mis en oeuvre une astuce toute bête à laquelle je n'avais jamais pensé auparavant : utiliser un masque spécifique pour le recalcul des documents. En effet, j'ai copié/collé les champs qui m'intéressaient du masque initial vers un nouveau masque de recalcul, puis j'ai simplement changé la valeur de l'item Form avant d'invoquer la méthode NotesDocument.ComputeWithForm(), pour restaurer juste derrière la valeur originale de l'item Form :
doc.Form = "form-de-calcul"
Call doc.ComputeWithForm(True, False)
doc.Form = "form-initial"
Et ça a marché. Là, comme ça, du premier coup, sans prévenir. Et sans vice caché, ni rien. La surprise s'est tout d'abord emparée de moi, pour ensuite laisser place à la félicité. A tel point que j'en ai fait un billet pour partager mon bonheur avec vous, tout en fredonnant l'air d'une publicité pour une marque de saucisses assez connue. Le développement Domino, des fois, ça peut être simple et agréable.
mardi 18 juillet 2006 à 23:09 :: Lotus Notes / Domino :: 8 commentaires