| 
| 
 | Вопрос # 4 504/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Снова решила к вам обратиться с просьбой о помощи. Суть проблемы:
 в БД есть поле "дата_рождения" в формате ddmmmmyyyy. Хочу организовать поиск по этому полю с помощью DateTimePicker. В результате с трудом разродилась таким кодом (см.приложение). В общем-то все работает, но я как то сомневаюсь,что этот код оптимален. По моему он страшный как голодный ГАИшник. Буду очень признательна за любой ответ.
 Приложение:Переключить в обычный режим procedure Tfrm_Mine.btn_1Click(Sender: TObject);var  dat,s,stroka:string;  day,mounth,year:Word;begin s:='';  DecodeDate(dtp_1.Date,year,mounth,day); s:=IntToStr(day); if Length(s)=1 then s:='0'+s; dat:=s; s:=IntToStr(mounth); if Length(s)=1 then s:='0'+s; dat:=dat+'.'+s+'.';    fDM.qry_Poisk.SQL.Clear; fDM.qry_Poisk.SQL.Add(stroka); fDM.qry_Poisk.Open;  frm_Poisk.ShowModal;end;
|  |   Вопрос задала: marinochka_m (статус: Посетитель)Вопрос отправлен: 15 августа 2010, 20:45
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, marinochka_m!Если я правильно понял, то дата в базе храниться в текстовом формате. Это конечно не очень оптимально, но скорее всего в этой задаче это даже плюс:).
 Единственное, что я бы переделал - это генерирование строки с датой. вот где то так.
 Вместо
 
 s:=IntToStr(day);
 if Length(s)=1 then s:=\'0\'+s;
 dat:=s;
 s:=IntToStr(mounth);
 if Length(s)=1 then s:=\'0\'+s;
 dat:=dat+\'.\'+s+\'.\';всего одну строку 
 dat := format('%.2d.%.2d.', day, mounth);Этот код и начальный ноль добавит, и и строку сформирует правильно.
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 15 августа 2010, 23:52
 Оценка за ответ: 5
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |