![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |