| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Почему лучше не использовать DateToStr |
| Автор: Medved 4.9.2003, 10:04 | ||||
| Давно хотел написать, да все как-то не удавалось. Вообщем была такая ситуация, разрабатывал программу, работала она с БД. Для модификации данных использовал SQL запросы, зашитые в самой программе. ну например (MS SQL):
Возьмем для примера текущую дату - '04.09.2003'. В результате выполнения этого запроса данные сохраняются. Но если в системных настройках краткий формат даты стоит как 'dd.mm.yy' то при этом записшется в базу дата в слудующем виде -'04.09.0003'. В результате при отображении этих данных в любом DBGrid-е выскакивает ошибка "Произошла ошибка при выполнении многошаговой операции" и все, програ виснет намертво. Если краткий формат даты стоит как 'dd.mm.yyyy', тогда все нормально, и все работает. Так вот, чтобы избежать этого, рекомендую использовать не DateToStr (или DateTimeToStr) а функцию FormatDateTime. В итоге код будет выглядет так:
И это позволит избежать вышепреведенной ошибки, а так же многих других. |
| Автор: gray_k 4.9.2003, 10:32 |
| можно дедать так: var: string ShortDateFormat begin ... lcShortDateFormat := ShortDateFormat; ShortDateFormat = 'dd.mm.yyyy'; {здесь проводим операции с НД} ShortDateFormat := lcShortDateFormat; ... end; |
| Автор: Vit 4.9.2003, 15:08 |
| Используй параметры, тогда этой проблемы не возникнет и сервер сам будет интерпретировать дату в нужном ему формате |
| Автор: Medved 4.9.2003, 16:09 |
| Да Вит, абсолютно с тобой согласен. Но случаи бывают разные..... |
| Автор: Fantasist 6.9.2003, 21:09 |
| Что за фигня, почему это сервер не понимает формат записи mm.dd.yy? Это же довольно стандарная запись. Во всяком случае в SELECT я использовал такой формат и без всяких CONVERT все работало нормально. |
| Автор: Medved 8.9.2003, 05:40 |
| Это зависит от настроек сервера. |