|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
как сделать напоминание в 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
|
|||
|
|||
Ошибка, как всегда, в прокладке... но это все лирика. А теперь проза.
Видимо, у тебя в бд в строковом поле хранится день и месяц рождения в формате 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; |