Таблица с динамическим источником записей не показывает записей в Access 2007, но работает в Access 2003

У меня есть база данных Access 2003, в которой используется основная форма с таблицей данных в подчиненной форме. Основная форма позволяет пользователю выбирать из меню, которое обновляет источник записей подчиненной формы. Подчиненная форма также обновляет количество и тип полей, доступных для редактирования, в зависимости от количества и типов полей в источнике записей формы. По сути, это динамический генератор таблиц данных. Это прекрасно работает в Access 2003 уже много лет. Если я открою ту же базу данных в Access 2007 (полная или во время выполнения), большинство пунктов меню будут работать. Однако, если я выберу любой пункт меню, который ссылается на одну конкретную таблицу, подчиненная форма покажет заголовки столбцов, но не покажет никаких строк данных и не отобразит никаких ошибок. Как будто запрос возвращает нулевые строки. В чем разница в Access 2007? Добавили ли они новые зарезервированные слова?

Вещи, которые я пробовал:

  • Обновлено каждое поле в таблице, чтобы убедиться, что нет нулевых значений (без изменений)
  • Переименованы каждое поле и имя таблицы на случай, если есть новые зарезервированные слова (без изменений)
  • Уплотнил и отремонтировал передок и зад (без изменений)
  • Пытался включать и исключать поля одно за другим, чтобы увидеть, не изменилось ли что-нибудь (без изменений)
  • Поместите источник записей формы в новый запрос. (он вернул ожидаемое количество строк)
  • Проверено, чтобы убедиться, что форма не установлена ​​в режим ввода данных. (Это не)
  • Проверено, чтобы убедиться, что в коде не применяются фильтры. (никто не был)
  • Проверено, чтобы убедиться, что запрос обновляется в Access 2007. (Это так)
  • Выборочно удаляемые фрагменты данных из исходной таблицы. (без изменений)

Я в тупике.


person RAW    schedule 26.08.2010    source источник


Ответы (1)


Я наконец смог решить проблему. Как я уже отмечал выше, моя таблица данных является подчиненной формой. Родительская форма устанавливает параметры, определяющие, как будет построена подчиненная форма. Во время построения таблицы исходный объект подчиненной формы заменяется пустой формой, чтобы скрыть предыдущую таблицу и обеспечить плавный переход к новой таблице. Прекрасно работает в Access 2000/2003.

Когда пустая форма заменяется новой таблицей в Access 2007, я обнаружил, что Access автоматически назначает первичный ключ данных подчиненной формы свойствам LinkMasterFields и LinkChildFields несвязанной родительской формы. Эти свойства раньше были пустыми, и я никогда не задавал их в коде. Возможно, это попытка Access 2007 быть полезным, а не ошибка, но разница в поведении не отмечена ни в одной технической справке, которую я могу найти, включая встроенный файл справки. Поскольку родительская форма не связана, она отфильтровывает все мои записи подчиненной формы. Если я явно установил LinkMasterFields = "" и LinkMChildFields = "" на этапе подстановки формы, все будет работать так же, как и раньше. Ура!

Опять же, решение состоит в том, что при настройке исходного объекта подчиненной формы обязательно явно установите свойства linkmastfields и linkchildfields, чтобы Access не сделал это за вас. Надеюсь, это избавит кого-то от многих часов разочарования, которое я испытал.

person RAW    schedule 27.08.2010
comment
Хорошо знать! Вы должны принять свой ответ, поскольку это решение вашей проблемы. - person David-W-Fenton; 28.08.2010