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