esc

(no subject)

Sep 19, 2011 11:44

У меня на работе полно идиотов. Постоянно натыкаюсь в коде на пассажи, после которых хочется кататься по полу с плачем и криками "make me unsee it!" И даже те два человека, которых я нахожу достойными уважения, и те периодически выкидывают неожиданные коленца. Вот например Боб. Умный же мужик. Единственный из всех в этом дурдоме, кто честно и до конца разобрался в предметной области. Но именно с базами данных у него какой-то хронический неклик. Например, периодически делает строковыми поля, совершенно не являющиеся строковыми про своей сути.

Сейчас импортирую данные из написанной им программы по учёту лицензий. Внутренняя программа для учёта наших же лицензий. C++ и Access. Все даты - строками. Зачем?! Неизвестно. Ну ладно, смотрю. В некоторых записях дата в формате "mm/dd/yyyy", в некоторых слово "None". Ну ладно, написал простейший Iif для конвертации. А хрен. Валится при попытке применить CDate() в клаузе WHERE. Я и так и сяк, думал уже может Access сошёл с ума и не умеет вычислять логические выражения по короткой схеме. Нет, умеет. Спрашиваю у Боба, там все строковые даты вообще вручную вводятся или их программа пишет? Нет-нет, отвечает он, всё программой, все строки гарантировано в правильном формате. А CDate() валится и всё тут. В SELECT проходит, а в WHERE валится.

После двух кружек кофе сообразил не поверить коллеге и посмотреть, что таки выдаёт мне CDate, когда не валится. И оказалось, что для 4 записей оно таки возвращает #Error. И оказались в этих записях с виду совершенно правильно отформатированные даты типа 31 февраля. Как он там их вводит и проверяет, одному Ктулху известно.

дедушкаголубчикзаберименяотсюда, программизмы

Previous post Next post
Up