欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

28. 在lotus notes中利用公式使配置数据更灵便

更新时间: 2014-01-05 03:00:49 责任编辑: Author_N1

 

28. 在Lotus Notes中利用公式使配置数据更灵活

公式语言虽然与LotusScript相比有很多限制,不适合用来写复杂的逻辑,但是简单的语法和丰富的函数使其可以作为一种表达式语言,用于诸如计算字段选项和列值的地方。LotusScript里的Evaluate函数本意是用公式增强脚本,补足它尚没有的功能。这一特色用在文档的域值上,却可以使配置数据大大灵活。比如在流程配置里设置用户,就可以使用公式{@If(Office="ABC"; "Test2/ABC/ABC"; "Test1/ABC/ABC")};在设置流程走向时,也可以用诸如TotalPrice>500的公式决定下一节点;在配置邮件模板时,更可以使用文本混合公式,灵活设定邮件内容。为了实现在配置数据里文本混合公式,我们需要定义特定的字符,比如大括号{},将公式包含其中,然后在读取时解析并和周围文本连接。于是,有了以下LotusScript函数:

Public Function ComputeString(document As NotesDocument,primitive As String) As String
	'计算包含公式的字符串
	'扫描字符串的每个字符,公式部分由{}包围		
	'document为计算公式所用的文档,primitive为公式
	Dim strChar As String '字符串中的单个字符
	Dim intPos As Integer '字符串中字符的位置
	Dim strResult As String '结果字符串
	Dim intBrace As Integer '{开始的位置
	Dim strFormula As String '公式
	Dim vCompute As Variant '公式计算的结果
	Dim blnFormula As Integer '标志当前字符是否是公式的一部分
	blnFormula=False
	For intPos=1 To Len(primitive)
		strChar=Mid(primitive,intPos,1)
		Select Case strChar
		Case "{"
				'公式开始了
			intBrace=intPos
			blnFormula=True
		Case "}"
				'公式结束
			strFormula=Mid(primitive,intBrace+1,intPos-intBrace-1)
			vCompute=Evaluate(strFormula,document)
			strResult=strResult & vCompute(0)
			blnFormula=False
		Case Else
			If Not blnFormula Then strResult=strResult & strChar	
		End Select
	Next
	
	ComputeString=strResult
End Function
很多时候,配置数据中的公式是计算一个真假值,用于条件判断的,这时,就可以在Evaluate它之后,专门获取这个Boolean值:
Public Function EvalCondition(macro As String, document As NotesDocument) As Boolean
	'Evaluate the item value into a boolean value. Return False if an error occurs during the evaluation.
	On Error Resume Next
	Dim v As Variant
	v=Evaluate(macro,document)
	EvalCondition=CBool(v(0))
End Function
函数接受的参数与Evaluate函数相同,分别为公式和计算时提供必要信息的文档。

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:00:49
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/17260/
本文WWW.DOC100.NET DOC100.NET版权所有。