Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычислить формулу хранящуюся в текстовом поле БД 
:(
    Опции темы
N1k
Дата 15.5.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.1.2006

Репутация: нет
Всего: 2



Есть таблицы "Материалы" и "Продукты".
Для каждого элемента таблицы "Продукты" свой набор материалов.
В таблице "Материалы" есть текстовое поле "РасчетКоличества" в котором хранится формула (что-то типа "a*b+c").
Нужно получить набор материалов для данного продукта (при заданных a,b и c) с полем "Количество" в котором будет числовое значение эквивалентное значению вычесленной формулы из поля "РасчетКоличества".
Т.е. если, например, a=10,b=20, с=30 и формула "a+b+c", то значение поля "Количество" для данного материала = 60.
Реально такое сдеать с помощью одного(без получения промежуточных данных) запроса?
если да , то можно ли пример.

Использую ADO, access.

  
PM MAIL   Вверх
Staruha
Дата 15.5.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: нет
Всего: 27



Если данные однотипные(для всего столбца вся формула),тогда это сделает Access. А если нет тогда придется воспользоваться Case средствами типа
               1 - a*b+c
               2 - a+c 


--------------------
Возмездие настигнет
PM MAIL   Вверх
Vit
Дата 15.5.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Ну формировать динамически SQL запрос, что-то типа:

Query2.sql.text:='Select * From Table1 Where '+Query1.fieldbyname('MyFormula').asstring

А если не в таблице надо вычислять, тогда модуль Parsing из RxLib поможет 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Akella
Дата 16.5.2006, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Конечно реально. Поищи по рунету информацию по ключевыым словам "парсинг", "разбор математических выражений" и т.д, возможно даже на форуме, может даже в  арсенале.... 
PM MAIL   Вверх
comtat
Дата 16.5.2006, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Хороший парсер для этих целей ArtFormula и ArtFormulan   smile  


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
N1k
Дата 16.5.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.1.2006

Репутация: нет
Всего: 2



Парсер - это понятно, но вопрос стоял 

Цитата(N1k @  15.5.2006,  17:23 Найти цитируемый пост)
Реально такое сдеать с помощью одного(без получения промежуточных данных) запроса?



Цитата(Staruha @  15.5.2006,  20:26 Найти цитируемый пост)
Если данные однотипные(для всего столбца вся формула),тогда это сделает Access. А если нет тогда придется воспользоваться Case средствами типа               1 - a*b+c               2 - a+c 


Можно поподробней? 
PM MAIL   Вверх
Vit
Дата 16.5.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Не уверен что MS Access поддерживает Case - слабенький там SQL используется. Во многих диалектах SQL возможна конструкция вида:

Код

Select 
  Field1,
  Case 
    When Field2=1 Then a*b+c
    When Field2=2 Then 2 - a+c 
  End
From MyTable...
 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
bas
Дата 16.5.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: 1
Всего: 2



Цитата(Vit @  16.5.2006,  15:54 Найти цитируемый пост)
Не уверен что MS Access поддерживает 

НЕ поддерживает.
 
PM MAIL   Вверх
Staruha
Дата 16.5.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: нет
Всего: 27



Я имела ввиду - если сохранять данные например в первом и втором столбце, то третий будет автоматически пересчитываться.Это когда данные однотипные.А остальное Vit сказал(Я на Delphi недавно. Извините,если ,что не так) 
 Vit, все-таки мне так представляется ,что Case можно без запроса построить,а данные для формул вытаскиать конечно запросом  

Это сообщение отредактировал(а) Staruha - 16.5.2006, 19:52


--------------------
Возмездие настигнет
PM MAIL   Вверх
Vit
Дата 16.5.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Staruha @  16.5.2006,  10:45 Найти цитируемый пост)
Я имела ввиду - если сохранять данные например в первом и втором столбце, то третий будет автоматически пересчитываться.Это когда данные однотипные.А остальное Vit сказал(Я на Delphi недавно. Извините,если ,что не так) 
 Vit, все-таки мне так представляется ,что Case можно без запроса построить,а данные для формул вытаскиать конечно запросом  



Нет, построить нет проблем, речь идёт о том чтоб реализовать эту логику в пределах одного запроса, и повидимому это невозможно. 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1477 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.