Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Вычислить формулу хранящуюся в текстовом поле БД |
Автор: N1k 15.5.2006, 17:23 |
Есть таблицы "Материалы" и "Продукты". Для каждого элемента таблицы "Продукты" свой набор материалов. В таблице "Материалы" есть текстовое поле "РасчетКоличества" в котором хранится формула (что-то типа "a*b+c"). Нужно получить набор материалов для данного продукта (при заданных a,b и c) с полем "Количество" в котором будет числовое значение эквивалентное значению вычесленной формулы из поля "РасчетКоличества". Т.е. если, например, a=10,b=20, с=30 и формула "a+b+c", то значение поля "Количество" для данного материала = 60. Реально такое сдеать с помощью одного(без получения промежуточных данных) запроса? если да , то можно ли пример. Использую ADO, access. |
Автор: Staruha 15.5.2006, 20:26 |
Если данные однотипные(для всего столбца вся формула),тогда это сделает Access. А если нет тогда придется воспользоваться Case средствами типа 1 - a*b+c 2 - a+c |
Автор: Vit 15.5.2006, 21:04 |
Ну формировать динамически SQL запрос, что-то типа: Query2.sql.text:='Select * From Table1 Where '+Query1.fieldbyname('MyFormula').asstring А если не в таблице надо вычислять, тогда модуль Parsing из RxLib поможет |
Автор: Akella 16.5.2006, 08:02 |
Конечно реально. Поищи по рунету информацию по ключевыым словам "парсинг", "разбор математических выражений" и т.д, возможно даже на форуме, может даже в арсенале.... |
Автор: comtat 16.5.2006, 08:10 |
Хороший парсер для этих целей ArtFormula и ArtFormulan ![]() |
Автор: Vit 16.5.2006, 15:54 | ||
Не уверен что MS Access поддерживает Case - слабенький там SQL используется. Во многих диалектах SQL возможна конструкция вида:
|
Автор: bas 16.5.2006, 16:46 |
НЕ поддерживает. |
Автор: Staruha 16.5.2006, 19:45 |
Я имела ввиду - если сохранять данные например в первом и втором столбце, то третий будет автоматически пересчитываться.Это когда данные однотипные.А остальное Vit сказал(Я на Delphi недавно. Извините,если ,что не так) Vit, все-таки мне так представляется ,что Case можно без запроса построить,а данные для формул вытаскиать конечно запросом |
Автор: Vit 16.5.2006, 22:54 | ||
Нет, построить нет проблем, речь идёт о том чтоб реализовать эту логику в пределах одного запроса, и повидимому это невозможно. |