использование свойств ColumnHidden в объектах Datasheet

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

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

person lamcro    schedule 05.11.2008    source источник
comment
Так является ли источником данных запрос/таблица? Вы всегда скрываете одни и те же столбцы или это динамическое?   -  person DJ.    schedule 05.11.2008
comment
Источник - таблица. Я скрываю сами столбцы таблицы.   -  person lamcro    schedule 05.11.2008


Ответы (2)


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

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

  • просто основывайте его на своем столе,
  • перетащите столбцы в форму (форматирование и размещение не имеют значения)
  • установите его в виде таблицы
  • редактировать метки (они становятся заголовками столбцов)
  • изменить порядок табуляции (это контролирует порядок отображения столбцов)
  • просмотреть таблицу и скрыть нужные столбцы
  • сохранить форму
  • добавить эту форму в качестве подчиненной к основной форме
person DJ.    schedule 05.11.2008
comment
К сожалению, я скрываю столбцы в зависимости от выбора пользователей. - person lamcro; 05.11.2008
comment
Я также скрываю столбцы, которые мы не хотим, чтобы пользователь заполнил, в зависимости от выбора, который они делают. - person lamcro; 05.11.2008
comment
Пробовал это и работал. Мне даже не пришлось менять код, чтобы скрыть/отобразить столбцы (что, кстати, было моим самым большим страхом)! Спасибо. - person lamcro; 06.11.2008

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

  DoCmd.Close acForm, Me.Name, acSaveNo

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

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

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

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

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

person David-W-Fenton    schedule 07.11.2008