Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.24;
Скачать: CL | DM;

Вниз

Сохранение значения полей.   Найти похожие ветки 

 
yozhik   (2002-05-28 20:11) [0]

Уважаемые, подскажите можно ли использоваить CalclField для хрения значений остальных полей запроса, если да то каким образом.


 
TSV ©   (2002-05-28 20:19) [1]

Для чего использовать???


 
yozhik   (2002-05-28 20:23) [2]

сорри, для хранения :)


 
TSV ©   (2002-05-28 20:29) [3]

А что значит - остальных полей запроса???
Или тебя интересует механизм использования CalclFields???


 
yozhik   (2002-05-28 20:32) [4]

Перефразирую вопрос.
Можно ли использовать CalcField для хранения значения любого другого поля, т.е. чтоб в CalcField сохранялось значени поля до его изменения.



 
TSV ©   (2002-05-28 20:45) [5]

По идее - да.
Создаешь его в design-time. Делаешь обработчик OnCalcFields. Пересчитывать само будет при изменении поля и не только.

Удачи.


 
yozhik   (2002-05-28 20:48) [6]

так не работает, при измеенение значения поля CalcField тоже меняет свое значение, может обработчик неравльно написан?


if Query1CalcFld.IsNull then
Query1CalcFld.Value := Query1SrcFld.Value


 
-=Sergeante=- ©   (2002-05-29 09:05) [7]

После открытия таблицы (и обсчета значений вычисл-го поля)попробуй сделать OnCalcFields:=nil


 
Сергей Иванов ©   (2002-05-29 09:51) [8]

А как насчет
CurValue, NewValue, OldValue: Variant;
имеющих место быть у TField. Не подходят?


 
yozhik   (2002-05-29 10:21) [9]

OnCalcFields:=nil - не подходит, почему я так и не понял, но когда устанавливаю, зачения CalcField сбрасываются :(
CurValue, NewValue, OldValue: Variant; - использовал, но почему-то, CurValue=NewValue=OldValue=Null при любых раскладах :(


 
-=Sergeante=- ©   (2002-05-29 11:59) [10]

А если не использовать CalcFields? Вмасто этого определить глобальную переменную, в которую в событии OnAfterScroll будет заноситься результат обработки. Т.о. у тебя в этой переменной постоянно находиться нужное значение при любом перемещении по НД.


 
-=Sergeante=- ©   (2002-05-29 12:02) [11]

Типа такого:

var s:string;
...
procedure Tform1.Table1AfterScroll(sender:TObject);
begin
s:=Table1.fieldbyname("field1").asstring+" "+Table1.fieldbyname("field2").asstring;
end;


 
yozhik   (2002-05-29 12:42) [12]

в принципе решение правильное, но при скроле переменная будет изменятся, и востановление значения предыдущего поля будет невозможно...

я нашел другой способ, использование массива...


 
-=Sergeante=- ©   (2002-05-29 17:08) [13]

Данные в массиве будут определены при открытии запроса. Каждой определённой записи будет соответствовать свой индекс массива. НО! Нет гарантии, что при переоткрытии запроса записи сохранят такую же последовательность (нумерацию) в соответствии с индексами массива.


 
yozhik   (2002-05-29 20:38) [14]

после переоткрытия массив перезаписывается, так как данные сохраняются в базе и возвратов не требуется



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

Текущий архив: 2002.06.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
6-77528
Серж2
2002-02-16 15:43
2002.06.24
POP3-компонента


7-77649
Antalex
2002-03-28 19:54
2002.06.24
В TurboPaskal при подключении CRT ошибка деления на 0


1-77461
SunVit
2002-06-11 00:37
2002.06.24
Как округлить число?


14-77618
Dr.Pipe
2002-05-19 15:35
2002.06.24
Кто какие глупости совершал в своей жизни?


1-77379
Groove
2002-06-13 14:03
2002.06.24
как передвинуть окошко?