Этот совет содержит рекомендацию на крайний случай по обходу ошибки, мешающей применять оператор сравления LIKE в руссифицированной версии Microsoft Query.
Введение
Начиная с первой версии АИС «РЕГОСС» базы данных Реестра содержит специально разработанные локализованные представления, имеющие осмысленные названия на русском языке (смотри Таблицу 1), и названные по-русски поля (смотри Рисунок 1).
№ | Название локализованного представления |
---|---|
Группа представлений для выбора данных о правообладателях (балансодержателях) | |
1 | _Акционерные Общества |
2 | _Государственные Предприятия |
3 | _Государственные Учреждения |
4 | _Прочие Организации |
Группа представлений для выбора данных об объектах реестра | |
5 | _Объекты Балансодержателя |
6 | _Объекты Реестра |
7 | _Объекты Арендованные |
Группа представлений для выбора данных об аренде (безвозмездном пользовании) объектами реестра | |
8 | _Договоры Аренды(Безвозмездного пользования) |
9 | _Должники |
10 | _Арендаторы |
11 | _Арендодатели |
12 | _Объекты Договоров Аренды |
Не смотря на то, что общепризнанным средством описания правил выборки данных является язык SQL, тем не менее его использование для многих пользователей оказывается серьезным препятствием. Поэтому, компанией Microsoft в продукты семейства Microsoft Office встроен компонент Microsoft Query. В этом инструменте реализован визуальный язык QBE( Query by Example — запрос по образцу).
Средствами Microsoft Query можно построить описание правила выборки данных из Реестра простым перетягиванием нужных полей из описания таблицы в таблицу условий и результирующую таблицу. В результате выполнения построенного таким образом запроса, выбранные данные сохранятся либо в документе MS Excel, либо в книге MS Word.
Но, использование русифицированного Microsoft Query, которым пользуются большинство пользователей, уже на протяжении более 10 лет связано с серьезной проблемой.
Авторское замечание.В этом (2014) году благодаря Партнерской программе Microsoft через подписку Microsoft Action Pack наша организация приобрела права на Microsoft Office 2013 на русском языке.
Надеялся сообщить, что наконец ошибка исправлена. Но увы… И в этой версии Microsoft Query ошибка осталась. С точки зрения программиста, эта ошибка легко исправима. Но, видимо информация о ней никак не дойдет до тех, кто может это сделать — разработчиков. Неоднократно мы пытались сообщить о ней по контактным телефонам представительства компании Microsoft. Но представители call — центров переводили разговор на отсутствие нужной (видимо для того чтобы нас поняли) лицензии. Писали официальные письма от имени различных органов государственной власти Красноярского края. Но, как видите, воз и ныне там.
Описание проблемы
Проблема состоит в том, что русифицированном Microsoft Query из версии в версию переходит одна и та же ошибка, которая значительно ограничивает возможности создания запросов средствами этого продукта. Ошибка проявляется тогда, когда пользователь пытается указать на необходимость извлечения записей, строковое поле которых содержит в качестве подстроки некое значение.
В языке SQL сравнение описывается при помощи ключевого слова LIKE. В руссифицированном Microsoft Query такое условие описывается с помощью следующей группы операций: «содержится в» («не содержится в»); «начинается с» («не начинается с»); «заканчивается на» («не заканчивается на»). И применение любой из них приводит к сообщению о синтаксической ошибке. Смотри Рисунок 2.
При этом точно известно, что в оригинальном Microsoft Query такой ошибки не наблюдается. Поэтому первой приходит мысль о том , что можно обойти ошибку, внеся изменение непосредственно в оператор SELECT, который генерируется параллельно с построением запроса в QBE. Но одного описания запроса в окне редактирования оператора SELECT недостаточно, т.к. Microsoft Query пытается преобразовать запрос в QBE и снова возникает сообщение о синтаксической ошибке. Смотри Рисунок 3.
Возможное решение проблемы
Для того, чтобы несмотря ни на что обойти ошибку, нужно внести такое изменение в оперетор SELECT, чтобы Microsoft Query отказался о попытки преобразовывать запрос в QBE, а сразу же выполнил его.
Таким изменением может быть, например, символ-разделитель операторов в SQL — «;» Смотри Рисунок 4.
Microsoft Query сообщит, что такой оператор не может быть представлен графически. Вы согласитесь с этим, взамен на данные, полученные в результате выполнения этого запроса. Смотри Рисунок 5.
Жаль, что для построения простого сравнения приходится прибегать к таким вычурным действиям, которые фактически сводят на нет возможности графического (визуального) построения запроса.
.