Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.05.2011, 01:23
Tokariy Tokariy вне форума
Прохожий
 
Регистрация: 09.05.2011
Адрес: Воронеж
Сообщения: 22
Репутация: 10
По умолчанию вычисляемое поле для Query

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;
в результате новое поле не появилось и ничего не вычисляется. Как быть? Как правильно приплюсовать 10 дней к дате? Помогите , подскажите, пожалуйста
Ответить с цитированием
  #2  
Старый 16.05.2011, 03:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А на уровне 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  
Старый 16.05.2011, 13:09
Tokariy Tokariy вне форума
Прохожий
 
Регистрация: 09.05.2011
Адрес: Воронеж
Сообщения: 22
Репутация: 10
По умолчанию

оказалось всё гораздо проще
в 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;
но для поля Data_per задаю всё таки тип не Data а DateTime.. и всё как по маслецу)

Последний раз редактировалось Tokariy, 19.05.2011 в 23:43.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:31.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025