Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Професиональное программирование


Информационный Канал Subscribe.Ru

Привет.

Как я уже упоминал в прошлых выпусках начат новый раздел по дельфи: http://club.shelek.com/view.php?id=63&type=0
, в котором сегодня очередное пополнение.

Несколько слов об изменении запроса в run-time
Автор: x77


Постановка


Очень часто при работе с запросами приходится менять SQL этого запроса. Например,
при изменении порядка сортировки, или при необходимости изменения фильтра, прописаного
в where. Сделать это стандартными средствами можно, но довольно муторно, т.к.
весь запрос хранится в одном месте (для TQuery и её потомков это свойство Sql).
При желании изменить, например, количество или порядок следования полей в order
by, нужно программно найти этот order by, написать свой, вставить его вместо
старого и т.д. Для меня, честно говоря, загадка, зачем борланд пошла по такому
ущербному пути: стандарт ANSI SQL-92, с которым (и только с которым!) работает
Bde, подразумевает достаточно жёсткий синтаксис запроса, вполне допускающий обработку
на уровне отдельных секций. Сегодня я хотел бы поделиться одним из вариантов
реализации потомка TQuery, в котором задачи такого класса будут решаться на лету
одной строчкой кода.



Смысл очень простой. Для того, чтобы уйти от ручной обработки текста sql-запроса,
надо просто разбить его на стандартные секции. И менять их по отдельности. Ведь
любой select-запрос имеет достаточно строгий синтаксис, состоя из определённого
количества заранее известных секций (clauses), задаваемых в строго определённой
последовательности. Рассмотрим этот синтаксис поподробнее на примере СУБД Interbase:



SELECT 
[TRANSACTION transaction][DISTINCT | ALL] {* | <val> [, <val> …]}[INTO :var [,
:var …]]FROM <tableref> [, <tableref> …][WHERE <search_condition>][GROUP BY col
[COLLATE collation] [, col [COLLATE collation] …] [HAVING <search_condition>]
[UNION <select_expr> [ALL]][PLAN <plan_expr>][ORDER BY <order_list>][FOR UPDATE
[OF col [, col …]]];



Как видим, обязательными являются две секции: SELECT и FROM. 
Ещё восемь секций опциональны. Наша задача сводится к тому, чтобы значение каждой
секции устанавливать отдельно, при необходимости переоткрывая запрос. Можно было
бы плясать от стандартного свойства Sql, выделять нужную секцию, менять, и вставлять
обратно. Но нафига козе баян, если можно сам Sql формировать на основе заданных
секций? Конечно, этот подход имеет тот минус, что накрывается прямая установка
Sql одной строкой, что может быть неудобно при хранении запроса в реестре, базе
и т.д., но и это при желании можно побороть.



В общем-то, ничего заумного, реализация до смешного проста, но при использовании
в проектах позволяет сэкономить массу времени и значительно увеличить читабельность
кода.

Продолжение здесь: http://club.shelek.com/viewart.php?id=100

Выложена новая книга - Visual Studio .Net за 21 день на английском языке.
Объем книженции 11 Мег с хвостиком.
Качать отсюда: http://club.shelek.com/download.php?id=70

Сегодня решил продолжить рассылку небольшим отступлением, которого на сайте нет.
Там просто идет разговор который подвиг меня на это.

Речь пойдет о спертом у Valve исходном коде игры HalfLife2.
Я хотел бы выразить свое моралдьное удовлетворение событием, по следующим причинам:

1. Полное и бессовестное засилье системы копирайтов в интернете в последнее время,
особенно это касается распространения mp3.
2. Перевод системы разработки в HiTech в Индию, Корею и прочую Азию.
3. Полный и беспросветный западный кризис высоких технологий.


Я уже как то писал о своем отношении к этому кризису, повторю только, что его
природа в человеческой жадности. Когда мелкие фирмочки хватались за новые возможности
в средствах связи и пытались на огромном скачке популярности интернета в мире
сделать немного денег, гигантские монополии решили не отставать и со свойственной
им щедростью, отвалили за начало новых проектов кучу зеленых бумажек.
Результат - естетвенное удешевление и повсеместное внедрение технологий по связи,
по сути мало необходимых, раздутые штаты и общая неокупаемость индустрии.
Далее - в связи с неплохим образованием и возможностями отсталых стран, а так
же высокой конкуренции от Азиатских фирм по цене продукта, огромные фирмы сегодня
провоцируют безработицу в высокоразвитых странах, начиная в погоне за дешевой
рабочей силой, переводить производство , а сегодня и разработку кода в отсталые
в финансовом плане страны.

Россия в этой игре оказалась в выигрышной позиции и имеет , как отсталая в финансовом
плане страна, получить немало свободных мест для программистов на ближайшие 5-7
лет и потом повторить путь кризиса, только уже по Российски, естественно.

Ценовые разбросы таковы, что работая дворником в развитой стране любой человек
зарабатывает около 20 баксов за 3 часа работы. Такая же 3-х часовая работа программера
стоит минимум 100- 150 долларов.
Результат торгов на открытых интернет сайтах типа http://www.rentacoder.com приводит
к тому, что Украинцы и Россияне готовы делать 3-х часовую работу программера
за 15 долларов и убивают любую торговлю. Это отвратительно, ибо они сами себе
режут зарплаты и возможные заработки. 

Ну и о копирайтерах. Продавая мне продукт, они с какой то стати вздумали ограничить
мои права на его использование, приписав себе право на это. 
С какой стати заплатив за новый альбом Мадонны порядка 30 баксов я обязан ТОЛЬКО
слушать его, а не имею права подарить его копию своей подруге или группе друзей
- выложить на прослушивание на свой сайт и т.д???

Покупая штаны я имею право их перешить или скопировать покрой, сшить 10 новых
и раздарить их друзьям , а вот диск - нет? И любой суд принимает во внимание
право ЧАСТНОЙ собственности на любой товар, а не принимает мое право на купленный
ДИСК.

-----------

Подведу итог своему воплю души :( уж простите кому это не нравится...

Ублюдочное управление крупными компаниями, а так же зажравшимися финансовыми
мешками с спонсорских структур, привели высокуие технологии на грань развала.
Вещи собранные в Китае живут на 1 месяц дольше гарантийного срока, едва больше
года. А нормальные вещи собранные 10 лет назад в Европе продолжают работать п
осей день - пример - CD- приводы.
Программы и так полны багов, а перевод их в Азию, где люди работают за гроши
уронит качество стандартов еще ниже. 
А засилье копирайтеров приведет к полной потере независимости интернета и похоронит
его как средство массовой информации свободное от финансовых воротил. 

Что приведет к развалу как рынка труда, так и к развалу самих технологий. А самое
главное к гигансткому снижению качества любых товаров. И все с одной единственной
целью: сделать богачей - еще богаче!

Ребята - программеры - не понижайте себе цену, думайте о будущем!

С уважением, Гром.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное