![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() 34.jpg
Есть Query1,а в нём поля Дата экзамена и оценка. Нужно создать вычисляемое поле Data_per (Дата пересдачи экзамена) которое должно заполняться по алгоритму: если оценка "2" то Дата пересдачи экзамена =Дата экзамена +10дней создаю вычисляемое поле - Data_per, задаю тип Data. Прописываю на событие OnCalcFields компонента Query1 следующее: Код:
if (Query1.FieldByName('Ocenka').Value='2') then begin Query1.FieldByName('Data_per').Value:=Query1.FieldByName('Data_ekzamena').Value+10; end; |
#2
|
|||
|
|||
![]() А на уровне Query не проще сделать?
Код:
SELECT Gruppa, FIO_Studenta, Nazv_Predmeta, FIO_Prepodavatelya, Ocenka, Data_ekzamenz, CASE WHEN Ocenka < 3 THEN INCDAY(Data_ekzamena,10) ELSE NULL END AS Data_Peresdachi FROM Table Функция изменения даты зависит от сервера - посмотри в документации. |
#3
|
|||
|
|||
![]() оказалось всё гораздо проще
в uses добавить DateUtils и прописать на событие OnCalcFields компонента Query1 следующее: Код:
procedure TForm1.Query1CalcFields(DataSet: TDataSet); begin if (Query1.FieldByName('Ocenka').Value='2') then begin Query1.FieldByName('Data_per').AsDateTime:=IncDay(Query1.FieldByName('Data_ekzamena').AsDateTime,10); end; end; Последний раз редактировалось Tokariy, 19.05.2011 в 23:43. |