Как запретить Access исправлять мои запросы?

Когда у меня есть подзапросы в Access, он пытается их «исправить» без запроса и ломает запрос в процессе. Например,

Выберите * из TblA LEFT JOIN (выберите * из объединения [TblB] выберите * из [TblC]) как SubQry On TblA.Whatever = SubQry.Whatever

Это отлично работает, когда я запускаю его в первый раз. Однако после того, как я сохраню его и попытаюсь снова открыть, Access пытается быть «полезным» и меняет скобки на квадратные скобки:

Выберите * из TblA LEFT JOIN [Выберите * из объединения [TblB] Выберите * из [TblC]]. как SubQry On TblA.Whatever = SubQry.Whatever

Конечно, это выдает ошибку. Есть ли параметр где-нибудь в меню параметров, который я могу переключить, чтобы Access перестал пытаться «помочь» мне?

(Сноска: настоящие имена таблиц более сложны, чем «TblB», и должны быть заключены в скобки, чтобы их можно было распознать).


person PowerUser    schedule 05.04.2011    source источник
comment
+100, если бы я мог. Я НЕНАВИЖУ эту функцию доступа.   -  person mwolfe02    schedule 05.04.2011
comment
Мне, например, не терпится увидеть эту функцию в MS Word. Представьте, что вы пишете документ Word и сохраняете его. Позже вы снова открываете его и обнаруживаете, что Word внес некоторые «полезные» исправления в ваш текст, не спрашивая вас и не сообщая вам об этом. Естественно, пользователь не может отключить эту функцию. Теперь, как это могло пойти не так???   -  person PowerUser    schedule 05.04.2011
comment
Какая версия? это не делает это для меня в 2007....   -  person RolandTumble    schedule 05.04.2011
comment
Если ваш второй оператор SQL на самом деле является тем, на что он был исправлен, Access, по сути, совершает ошибку. Но я подозреваю, что вы неправильно расшифровали его — производная таблица должна выглядеть так: [...]. as SubQry — обратите внимание на точку после закрывающей скобки. Однако ваш фактический подзапрос полностью недействителен, поскольку он пытается ОБЪЕДИНИТЬ оператор SELECT с именем таблицы. Вы не можете этого сделать. Вы, вероятно, имели в виду: [SELECT * FROM TblB UNION SELECT * FROM TblC]. as SubQry.   -  person David-W-Fenton    schedule 07.04.2011
comment
Обратите внимание, что внутри подзапроса не может быть квадратных скобок, но Access не поместит их туда, если у вас нет нераспознанных выражений (как в случае с дефектным UNION).   -  person David-W-Fenton    schedule 07.04.2011
comment
@RolandTumble, сейчас 2003 год. Я соответственно обновил теги.   -  person PowerUser    schedule 13.04.2011
comment
@Fenton, спасибо, что указали на это. Я обновил вопрос соответственно.   -  person PowerUser    schedule 13.04.2011


Ответы (1)


АФАИК, вы не можете. Круглые скобки вокруг ваших подзапросов всегда заменяются квадратными скобками, и вы должны отменить это, если хотите повторно сохранить.
Все, что вы можете сделать, это сохранить подзапрос как отдельный запрос и использовать его до тех пор, пока ваше приложение действительно стабильный, а затем интегрировать подзапрос в основной.

person Patrick Honorez    schedule 05.04.2011
comment
Вы можете обойти это, включив режим SQL ANSI 92 в Access, который позволяет вам использовать традиционные круглые скобки, но это влияет на части Access, которые действительно неприемлемы (например, он изменяет список зарезервированных слов (которые могут привести к поломке рабочего SQL) и предотвращает расширение полей со списком с несколькими столбцами с помощью автозаполнения). - person David-W-Fenton; 07.04.2011