Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2012, 09:43   #1
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию Проверка на окончание лицензии

Имеется код

Код:
procedure TForm3.Button8Click(Sender: TObject);
var d:integer;
good:boolean;
begin
DM.Query1.Close;
DM.Query1.SQL.Text:='SELECT * FROM PO';
DM.Query1.Open;
good:=true;
while not DM.Query1.Eof
  do
  begin
  d:=DM.Query1.FieldByName('End_date').AsVariant-now;
  if d<=45 then
    begin
    good:=false;
     ShowMessage('Контракт'+DM.Query1.FieldByName('End_date').AsString+ ' закончится через '+IntToStr(d)+' дней');
  end;
       DM.Query1.Next;
  end;
   if good then Showmessage('Сроки лицензии в порядке');
end;

Как сделать так чтобы если срок окончания общий для нескольких записей выдать только одно сообщение а не несколько? (пример кода)
Ericnex вне форума Ответить с цитированием
Старый 10.09.2012, 10:01   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

почитать SQL групповые операции (group by ) и агрегатные функции.

Например здесь Мартин Грубер Понимание SQL. Ссылка есть в первой прикрепленной теме раздела.
Цитата:
(пример кода)
примеры кода SQL там есть.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 10.09.2012, 10:26   #3
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Насколько я понял из того что прочитал надо сделать вот так:

Код:
procedure TForm3.Button8Click(Sender: TObject);
var d:integer;
good:boolean;
begin
DM.Query1.Close;
DM.Query1.SQL.Text:='SELECT * FROM PO group by End_date';
DM.Query1.Open;
good:=true;
while not DM.Query1.Eof
  do
  begin
  d:=DM.Query1.FieldByName('End_date').AsVariant-now;
  if d<=45 then
    begin
    good:=false;
     ShowMessage('Контракт'+DM.Query1.FieldByName('End_date').AsString+ ' закончится через '+IntToStr(d)+' дней');
  end;
       DM.Query1.Next;
  end;
   if good then Showmessage('Сроки лицензии в порядке');
end;
Ericnex вне форума Ответить с цитированием
Старый 10.09.2012, 11:48   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Насколько я понял из того что прочитал надо сделать вот так:
За 20 минут нашли и прочитали книгу (200 страниц)?
Или хотя бы пролистали ее и нашли в ней место опысывающее работу с group by?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 10.09.2012, 12:03   #5
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Прочитал главу про Group by но пока не знаю как применить это к своей ситуации
Ericnex вне форума Ответить с цитированием
Старый 10.09.2012, 12:26   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Сообщение от Ericnex Посмотреть сообщение
Как сделать так чтобы если срок окончания общий для нескольких записей выдать только одно сообщение а не несколько? (пример кода)
никак ... для этого прийдется делать еще 1 запрос в базу для формирования (в случае окончания срока лицензии) списка контактов у которых он заканчивается
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Номер лицензии lilu1559 Помощь студентам 11 20.08.2012 15:47
swf-файлы. проверка лицензии. dugo Свободное общение 3 22.02.2012 12:42
Составление лицензии на мою прогу doniyor Свободное общение 12 08.04.2011 12:23
окончание ScrollBar Elfist Общие вопросы Delphi 6 26.07.2010 16:35
Выбор лицензии Emperor Свободное общение 2 30.11.2009 17:38