Я пишу приложение .Net, в котором я должен поддерживать определяемые пользователем формулы, которые могут выполнять базовую математику, а также получать доступ к данным из любой произвольной таблицы в базе данных.
У меня математическая часть работает с использованием JScript Eval ().
То, что я еще не решил, это то, что хороший способ - это сделать поиск по общей таблице.
Например, у меня может быть формула что-то вроде :
Колонка: BonusAmount
Формула: {CurrentSalary} * 1.5 * {[SystemSettings] [Значение] [SettingName = CorpBonus AND Year = {Year}]}}
Таким образом, в этом примере я заменил бы {xxx} и {Year} значением столбца xxx из текущей таблицы, и я бы заменил вторую часть значением (выберите Value из SystemSettings WHERE SettingName = 'CorpBonus 'И Год = 2008)
Итак, в основном я ищу что-то очень похожее на функцию MS Access DLookup:
DLookup (выражение, домен, [критерии])
DLookup ("[UnitPrice]", "Детали заказа", "OrderID = 10248")
Но мне также нужна общая процедура синтаксического анализа, которая может указать, нужно ли просто искать в текущей строке или заглядывать в другую таблицу. Также было бы неплохо поддерживать агрегатные функции (например, DAvg, DMax и т. Д.), А также обрабатывать все странные крайние случаи.
Поэтому мне интересно, знает ли кто-нибудь о какой-либо существующей библиотеке или имеет хорошую подпрограмму, которая может обработать эту формулу при разборе и требований к поиску базы данных / разрешению агрегатной функции.