Таблица данных с динамическим источником записей не показывает записей в Access 2007, но работает в Access 2003 - PullRequest
2 голосов
/ 26 августа 2010

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

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

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

Я в тупике.

1 Ответ

5 голосов
/ 28 августа 2010

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

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

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

...