Локализованные представления и ошибка Microsoft Query

Этот совет содержит рекомендацию на крайний случай по обходу ошибки, мешающей применять оператор сравления 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 — запрос по образцу).

Рисунок 1
Рисунок 1.

Средствами 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.

Рисунок 2
Рисунок 2.

При этом точно известно, что в оригинальном Microsoft Query такой ошибки не наблюдается. Поэтому первой приходит мысль о том , что можно обойти ошибку, внеся изменение непосредственно в оператор SELECT, который генерируется параллельно с построением запроса в QBE. Но одного описания запроса в окне редактирования оператора SELECT недостаточно, т.к. Microsoft Query пытается преобразовать запрос в QBE и снова возникает сообщение о синтаксической ошибке. Смотри Рисунок 3.

Рисунок 3
Рисунок 3.

Возможное решение проблемы

Для того, чтобы несмотря ни на что обойти ошибку, нужно внести такое изменение в оперетор SELECT, чтобы Microsoft Query отказался о попытки преобразовывать запрос в QBE, а сразу же выполнил его.

Таким изменением может быть, например, символ-разделитель операторов в SQL — «;» Смотри Рисунок 4.

Рисунок 4
Рисунок 4

Microsoft Query сообщит, что такой оператор не может быть представлен графически. Вы согласитесь с этим, взамен на данные, полученные в результате выполнения этого запроса. Смотри Рисунок 5.

Рисунок 5
Рисунок 5.

Жаль, что для построения простого сравнения приходится прибегать к таким вычурным действиям, которые фактически сводят на нет возможности графического (визуального) построения запроса.

.

This entry was posted in РЕГОСС на заметку and tagged , , , , . Bookmark the permalink.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *