Форма MS-Access 2010: поле не принимает источник данных с двумя дефисами

У меня есть форма, основанная на запросе с несколькими таблицами. Поскольку некоторые поля из разных таблиц имеют одинаковые имена, я должен добавить имя соответствующей таблицы. Однако в названиях таблиц и в названиях полей есть дефисы (оба унаследованы от сторонних таблиц Excel).

В VBA проблем нет: [Table-1.Field-1] всегда хорошо работает (также в SQL-запросах). Однако, когда я пишу это в режиме черновика в качестве источника данных в форме, Access "думает", что это неправильно, и автоматически заменяет его на [[Таблица-1]. [Поле-1] ]] - в результате в форме отображается ошибка #Name?. Я пытался заменить [] кавычками, но безуспешно.

Обратите внимание, что ошибки не возникает, если дефис есть только в таблице или только в поле: форма принимает оба поля MyTable. [Field-1] и [Table-1] .Myfield.


person Bughater    schedule 26.11.2018    source источник


Ответы (2)


Правильный синтаксис должен быть:

[Table-1].[Field-1]

Или, используя обозначение взрыва:

[Table-1]![Field-1]
person Lee Mac    schedule 26.11.2018
comment
Возможно, но Access не принимает это и автоматически добавляет […] вокруг него - также когда я выбираю это поле в раскрывающемся меню полей. И это приводит к вышеупомянутой #Name? -Ошибке. - person Bughater; 26.11.2018
comment
@Bughater Я не могу воспроизвести это поведение: создавая форму с источником записи, установленным для запроса, содержащего два экземпляра Field-1, полученных из двух таблиц Table-1 и Table-2, я могу без проблем установить источник управления текстового поля на [Table-1].[Field-1] . Возможно, вы могли бы обновить свой вопрос, указав источник записей для вашей формы и снимок экрана, где вы пытаетесь установить источник управления? - person Lee Mac; 26.11.2018
comment
Вы правы для новой базы данных с двумя простыми таблицами с двумя полями в каждой. Однако моя форма имеет 30 полей и основана на запросе с 8 таблицами, 30 полями и 8 вычисляемыми переменными. Там я могу установить текстовое поле на [Таблица-1]. [Поле-1] тоже, но когда я сохраняю представление дизайна формы, это немедленно изменяется на [[Таблица-1]. [Поле-1]], и я получаю ошибка в форме. Тот же результат, когда я просто закрываю представление дизайна без явного сохранения. Однако в остальном эта форма работает отлично (с обходным решением ниже) и никоим образом не повреждена. - person Bughater; 01.12.2018

Между тем я нашел не верный ответ, но тем не менее вполне удовлетворительный обходной путь, добавив следующее вычисляемое поле в запрос:

MyWorkAround: [Table-1.Field-1]

Затем я могу просто сослаться на [MyWorkAround] в соответствующем поле формы, чтобы избежать ошибки формы. Но это не совсем элегантно!

Обратите внимание, что я всегда использую […] вокруг полей, даже если в этом нет необходимости. Это помогает избежать множества ошибок.

person Bughater    schedule 26.11.2018