Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
9-1063820414
-J=A=X-
2003-09-17 21:40
2004.04.04
Game -на Delphi GLScene 3D/ HELP!!!


3-1078208297
sohat
2004-03-02 09:18
2004.04.04
Знатокам EhLib, Раскрывающийся список в Гриде без lookup поля.


6-1073917961
BillyJeans
2004-01-12 17:32
2004.04.04
Прокси...


1-1079600478
Виталик
2004-03-18 12:01
2004.04.04
Логические операции


8-1070708676
guest
2003-12-06 14:04
2004.04.04
Как в DelphiX из нескольких картинок сделать одну?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский