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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.03.2010, 23:11
tana tana вне форума
Прохожий
 
Регистрация: 15.03.2010
Сообщения: 1
Репутация: 10
По умолчанию как сделать напоминание в Delphi

все компилится, но не выводит дату ,если месяц не двухзначное число. Помогите найти в чем ошибка

Код:
procedure TForm9.FormActivate(Sender: TObject);
var data_rozhdenia: string[30];
  Present: TDateTime;
  Year, Month, Day : Word;
begin
Present:= Now; // Now - функция, возвращает текущую дату и время
  DecodeDate(Present, Year, Month, Day);
  if (Month<10) then
  data:=IntToStr(Day)+'.0'+inttostr(Month)
   else data:=IntToStr(Day)+'.'+inttostr(Month);
  if ((Day<10) and(Month<10)) then
  data:='0'+IntToStr(Day)+'.0'+inttostr(Month)
   else data:=IntToStr(Day)+'.'+inttostr(Month);
     if (Day<10)  then
  data:='0'+IntToStr(Day)+'.'+inttostr(Month)
   else data:=IntToStr(Day)+'.'+inttostr(Month);

data_rozhdenia:=data;
if data_rozhdenia<> '' then
begin
with datamodule8.ADOQuery2 do begin
 Close;
 SQL.Clear;    //очищение предыдущего запроса
 SQL.Add('select * from Таблица1');  //выбирает все данные из таблицы
 SQL.Add('where (data_rozhdenia like "'+data_rozhdenia+ '%") '); //выбор данных из таблицы
   Open;

 if RecordCount <> 0 then  //чтение записей пока не дойдет до последней
         begin
           datamodule8.DataSource4.DataSet:=datamodule8.adoquery2;
                      end
           else
        begin
       dbgrid1.Visible:=false;
        DBNavigator1.Visible:=false;
        form9.ClientHeight:=250;

        exit;

        end;
        end;
          end;
         end;
Ответить с цитированием
  #2  
Старый 16.03.2010, 05:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ошибка, как всегда, в прокладке... но это все лирика. А теперь проза.
Видимо, у тебя в бд в строковом поле хранится день и месяц рождения в формате DD.MM.YYYY и ты пытаешься найти соответсвующие записи. Вообще, можно просто использовать встроенные функцит сервера MONTH и DAY. Но мы не ишем легких путей

Код:
var
  S : String;
begin
  S := Format('%2d.%2d',[DayOf(Date),MonthOf(Date)]) + '%';
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add('SELECT * FROM Таблица1');
  ADOQuery.SQL.Add('WHERE data_rozhdenia like ''' + S + '''');
  ...
end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter