具有通用DLookup功能的公式解析/评估例程或库

时间:2009-01-12 18:30:43

标签: .net sql sql-server visual-studio

我正在编写.Net应用程序,我必须支持用户定义的公式,这些公式可以执行基本数学,以及从数据库中的任意表访问数据。

我使用JScript Eval()来运行数学部分。

我还没有决定采用通用表查找的好方法。 例如,我可能有一个类似的公式:
专栏:BonusAmount 公式:{CurrentSalary} * 1.5 * {[SystemSettings] [Value] [SettingName = CorpBonus AND Year = {Year}]}

所以,在这个例子中,我将{xxx}和{Year}替换为当前表中的列xxx的值,我将用值替换第二部分(从SystemSettings中选择值WHERE SettingName ='CorpBonus 'AND年= 2008年)

所以,基本上,我正在寻找与MS Access DLookup功能非常相似的东西:
DLookup(表达式,域名,[条件])
DLookup(“[UnitPrice]”,“订单详情”,“OrderID = 10248”)

但是,我还需要整体解析例程,它可以判断是在当前行中查找,还是查看另一个表。也可以很好地支持聚合函数(即:DAvg,DMax等),以及处理的所有奇怪的边缘情况。

所以我想知道是否有人知道任何类型的现有库,或者有一个很好的例程可以处理解析数据库查找/聚合函数解析要求的公式。

2 个答案:

答案 0 :(得分:1)

您可以在JScript中实现自己的DLookup功能,“eval”表达式可以访问它。 “eval”的缺点是用户可以调用任何其他JScript函数,这会使整个系统不安全。您能否提供有关您问题的更多细节?

答案 1 :(得分:0)

最正确的方法是使用ANTLR http://www.antlr.org/之类的解析器,但不能在公园散步。