Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Внизкак в run-time создать обработчик CalcFields Найти похожие ветки
← →
AlexA © (2004-03-04 15:42) [0]Дело в следующем:
есть динамический запрос, напр select Field1, Field2 from Table. Необходимо в делфях создать вычисляемое поле.
Как создать поля я представляю. А как назначить выражение для вычесления. По выражения необходимо можно только узнать привыполнении приложении.
Другими словами как в run-time создать обработчик CalcFields.
Спасибо. извените за костноязычие.
← →
SPIRIT © (2004-03-04 15:58) [1]завести переменные типа String - p1, p2, p3
и и после выполнения запроса передаешь их
в OnCalcFields
а там fieldbyname("p1").value:=fieldbyname("p2").value+fieldbyname("p3").value
естественно отключаешь OnCalcFields выполняешь запрос
и присваиваешь p1, p2, p3 имена полей.
включаешь
OnCalcFields
*написал и подумал: "БРЕД !!!!"*
← →
Anatoly Podgoretsky © (2004-03-04 16:01) [2]Обработчики создаются только в рантайм.
← →
AlexA © (2004-03-04 16:14) [3]Что "бред"?? :)
А я не знаю количество полей..
← →
AlexA © (2004-03-04 16:16) [4]уважаемый Anatoly Podgoretsky , поясните пжл
← →
SPIRIT © (2004-03-04 16:17) [5]
> А я не знаю количество полей..
ну блин ... как так .. но что то же знаешь
← →
Mike Kouzmine © (2004-03-04 16:19) [6]А что, в запросе нельзя вычислять эти поля?
← →
AlexA © (2004-03-04 16:23) [7]>Mike Kouzmine
Это вариант, я расматриваю.. неизвестно какие поля будут..., зависит от выбора пользователя... довольно таки сложно..
← →
Mike Kouzmine © (2004-03-04 16:25) [8]Не сложнее, а проще чем ты хочешь сделать.
← →
SPIRIT © (2004-03-04 16:28) [9]
> AlexA © (04.03.04 16:23) [7]
пускай тогда пользователь и определяет какие поля делать вычисляемыми и в запросе их формировать
*
ибо не фиг
*
← →
kaif © (2004-03-04 16:31) [10]Тебе нужен не "рантайм-обработчик", а скриптер. То есть компонент, который может вычислять различные выражения, которые введет пользователь и использовать в качестве переменных значения полей (обращаться к полям). Поищи компоненты-скриптеры. Выбери себе такой компонент. Затем в обработчике OnCalcFields сделай вызов его метода (Evaluate или Exceute, в зависимости от компонента), передав в него выражение, которое пользователь задаст в известном синтаксисе и в обработчик (OnGetValue или аналогичный), который при разборе выражения обнаруживает неизвестные переменные и пытается их узнать из "внешнего мира" по их имени запиши код, при помощи которого можно будет добраться до значения полей (TField.Value) по их имени. Обычно скриптеры используют тип переменных Variant.
Я использую TScripter от Dream Controls. Но он платный. Есть и бесплатные компоненты-скриптеры. В конце концов можешь сам написать. Для этого можно разобраться в теории, как разбираются математические выражения (кажется это называлось обратная польская запись).
← →
Соловьев © (2004-03-04 16:42) [11]2 AlexA
А много полей и операций?
может есть смысл перебрать все варианты? и просто по условию выбирать нужны?
А какая СУБД? может действительно лучше SQL?
← →
AlexA © (2004-03-04 16:49) [12]>kaif спасибо.. именно про "обратная польская запись" читаю..
про "скриптеры" ничего до этого не знал... еще раз спасибо, буду копать..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.029 c