используя свойства ColumnHidden в объектах Datasheet - PullRequest
4 голосов
/ 05 ноября 2008

У меня есть форма MS Access с подчиненной формой Datasheet .
Используя код, я изменяю свойство ColumnHidden различных его столбцов. Но когда я закрываю форму, меня спрашивают, сохранять ли макет таблицы таблицы данных.

  • Как я могу запретить форме постоянно запрашивать у пользователя одинаковое расположение таблиц?
  • У меня нет другого выбора, кроме как изменить таблицу данных на обычную подчиненную форму?

Ответы [ 2 ]

2 голосов
/ 05 ноября 2008

Если вы всегда скрываете одни и те же столбцы - создайте запрос, содержащий только те столбцы, которые вы хотите отобразить, и используйте его в качестве источника подчиненной формы.

Если вам все еще нужны скрытые поля (дочерние ключи и т. Д.), Вам придется создать обычную форму. Это не так уж плохо:

  • просто положите его на стол,
  • перетащите столбцы на форму (форматирование и размещение не имеют значения)
  • установить вид таблицы
  • редактировать метки (они становятся заголовками столбцов)
  • изменить порядок табуляции (это определяет порядок отображения столбцов)
  • просмотр таблицы и скрытие нужных столбцов
  • сохранить форму
  • добавить эту форму как подчиненную форму к основной форме
0 голосов
/ 07 ноября 2008

Я не уверен, что есть простой способ сделать это, потому что Access сохраняет много свойств с формами. Если вы не используете представление таблицы, вы можете скрыть кнопку ЗАКРЫТЬ в форме и заменить ее на командную кнопку, чтобы закрыть форму с этим кодом:

  DoCmd.Close acForm, Me.Name, acSaveNo

Но так как это таблица данных, вы не можете этого сделать.

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

Одним из решений будет повторная инициализация ширины столбцов в событии OnLoad вашей таблицы данных. Затем вы можете открыть форму с помощью acHidden и в событии OnLoad установить ширину столбцов на их правильные значения (вам нужно умножить дюймы на 1440, чтобы получить значение твипов, назначаемое свойствам ширины столбца), и на конец OnLoad, установите Me.Hidden на False.

Но это действительно что-то вроде боли в заднице.

Боюсь, что это один из недостатков использования таблиц данных, поскольку нет способа определить кнопку закрытия, которая не будет сохранять данные пользовательского интерфейса конечного пользователя.

...