Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Вниз

Вычисляемые поля ...   Найти похожие ветки 

 
Lina   (2002-09-04 13:41) [0]

Добрый день!

Есть функция вычиления поля:
procedure TMainForm.Query2CalcFields(DataSet: TDataSet);
begin
<выч. поле>.Value:= <выражение>;
end;

Если вызывать ее из любого места программы:
Query2CalcFields (Query2);
получаю исключение т.к. Query2.state = dsBrowse а не dsCalcFields

Как в любом месте программы пересчитать вычисляемое поле ?
Помогите плз.


 
Mike Kouzmine   (2002-09-04 13:46) [1]

Оно пересчитывается автоматически. Не надо явно вызывать. Единственное - св-во CalcFields TQuery должно быть True


 
Lina   (2002-09-04 13:56) [2]

В том-то и дело, что нужно вызвать явно ...


 
Anatoly Podgoretsky   (2002-09-04 13:56) [3]

Это не стоит делать, написал(а) обработчик и забудь о нем


 
Mike Kouzmine   (2002-09-04 13:57) [4]

А зачем явно, если это происходит автоматически? Может можно предложить что-то другое?


 
oss   (2002-09-04 14:04) [5]

надо явно, сделай отдельную функцию и вызывай ее где надо,
и квери это не датасет, тип другой


 
Lina   (2002-09-04 14:05) [6]

Т.е. никак нельзя явно вызвать обработчик события OnCalcFields
(кроме Query.Next; Query.Prior; Query.Edit и т.п.) ?


 
Mike Kouzmine   (2002-09-04 14:11) [7]

По всей видимости при вызове проверяется state, если он не равен dsCalcFields, то исключение. Если ты сможешь корректно перевести набор в этот state, то - флаг в руки.


 
Дмитрий Калугин   (2002-09-04 16:08) [8]

извне этот обработчик вызывать нельзя, если надо что-то пересчитать, то тут желательно использовать переменную,
а не выражение. (для лучшей производительности)


procedure TMainForm.Query2CalcFields(DataSet: TDataSet);
begin
<выч. поле>.Value:= < переменная>;
end;

Присвоил новое значение и дай Refresh


 
Mike Kouzmine   (2002-09-04 16:22) [9]

Дмитрий Калугин -> А если в вычислении этой переменной учавствуют поля текущей таблицы, то как? Очень спорный совет, мне кажется


 
Дмитрий Калугин   (2002-09-04 17:05) [10]

>Mike Kouzmine
А зачем тогда ее вызывать извне вообще?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.09.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
3-85336
mikl123
2002-09-04 11:16
2002.09.26
Передача данных в ClientDataSet


3-85378
Beer
2002-09-04 17:26
2002.09.26
select distinct


1-85532
Mazenrat
2002-09-12 20:37
2002.09.26
Воспроизведение CD-диска.


3-85366
vanko
2002-09-03 12:17
2002.09.26
Заппрос


6-85627
Gregson
2002-07-25 14:04
2002.09.26
OFF: очень нужна помощь





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский