Заметки программера Чему равно дважды два равно четыре?
Revert
Переводим ASDF в ФЫВА и наоборот.
Хорошо!!
Радикальный улучшатель настроения.
Грамота
Покажи всем, насколько ты крут - выпиши себе мега-грамоту!
07.09.2011, 09:37   Статьи » Как не надо делать

Составляем фильтр

Помимо всего прочего, используется у нас в отделе кадров программа "Кадровый учет", разработанная неким Свинцицким Ф.Б.. По роду деятельности мне приходится периодически исправлять баги и в ней. Сейчас в изумлении смотрел на прекрасный код, отвечающий за формирование условий запроса (несколько условий фильтрации), который (код) привел к ошибке "Incorrect syntax near the keyword 'where'". Как делают нормальные люди? Обычно как-то вот так: Пишется общая часть запроса - набор полей, которые мы будем получать, набор таблиц, из которых мы эти поля вытащим, если используется не join - прописываются условия связки таблиц (типа как where TABLE1.T2_ID = TABLE2.ID). Если же используется join - приписывается условие, которое выполняется всегда (ну, к примеру, where 1=1). После этого составляется фильтр. В нашем случае - в зависимости от того, какие галочки отмечены юзером, дописываются условия запроса. Как обычно выполняется такое действие? Примерно следующим образом: проверяется - отмечен checkbox или нет, если отмечен, то в некую строковую переменную дописывается нечто вроде "and какое_то_условие". В дальнейшем данная строковая переменная будет добавлена к общей части запроса. Но Франц Свинцицкий - он не таков! Франц делает гораздо интереснее! Франц не опускается до указания заведомо выполнимого условия. Ему гораздо интереснее ввести дополнительную булевскую переменную, изначально присваивает ей true, а затем при проверке отметки каждого checkbox делает следующее: Если переменная = true, то в строку фильтрации тов.Свинцицкий пишет "where какое_то_условие" и присваивает переменной false, иначе пишет "and какое_то_условие". Разумеется, это крайне оригинальный и надежный подход, но делать так всё-таки не надо.

Комментарии

Добавлние комментов отключено на время переезда

Картинки

Прекрасная игра

Егор и разработка

Когда нет домкрата
Ссылки