MS Access VBA - Сохраняйте изменения, внесенные в размер отчета / размеры элементов управления, в режиме макета

avatar
Dan
8 апреля 2018 в 00:36
145
1
1

У меня есть следующий (упрощенный) код VBA, который демонстрирует проблему при изменении размера отчета и его элементов управления из модуля. Для воспроизведения создайте новую пустую базу данных, добавьте таблицу и отчет, а затем добавьте этот код в новый модуль:

.
Public Sub ResizeReport()
    Dim rr as Report
    Dim cc as Control

    Set rr = Screen.ActiveReport

    For Each cc in rr.Controls
         cc.Width = 1 * 1440
    Next

    rr.Width = 5 * 1440
End Sub

Если я открою отчет в Design View и запущу макрос, изменения останутся, когда я переключусь на другие представления (например, Report View, Layout View или Print Preview). Однако, если я открою отчет в Layout View и запущу макрос, размер отчета и его элементов управления изменится, но как только я изменю режим просмотра, отчет вернется к своему состоянию до изменения размера.

Обратите внимание, что эта проблема не возникает, если я вручную изменяю размер отчета/элементов управления с помощью маркеров перетаскивания или Property Sheet в Layout View.

Есть ли команда, которую мне нужно выполнить после изменения размера отчета/элементов управления из VBA, находясь в Layout View, чтобы изменения закрепились? Или мне следует изменить размер отчета/элементов управления, используя разные команды VBA?

Я использую MS Access 2010.

Источник
ashleedawg
22 апреля 2018 в 23:51
0

Не забывайте ✓ Accept Ответ, который помог решить вашу проблему ... вы получите <30874994149804> <308743214999999> <3087432149999999> Репутация, а ответ на ответ <30874321499800> <+15) > респ. Вы можете Также ▲ Upvote <30874321499811> Любые ответы, которые полезны, которые также вознаграждают авторы < и <3087494149813> Преимущества сообщества переполнения стека в целом!

Ответы (1)

avatar
ashleedawg
8 апреля 2018 в 03:16
1

Спасибо за короткий, но подробный вопрос и работающий "MCVExample". Возможно, мне придется отослать других новичков к этому вопросу в качестве примера идеального вопроса. +1 за это, хотя ответ кажется очевидным. :)


Вы должны сохранить отчет перед изменением его вида.

DoCmd.Save acReport, rr.Name

Это принудительно закрепит изменения. Логика возврата отчета в предыдущее состояние при изменении представления заключается в том, чтобы разрешить динамические временные изменения во время выполнения, не влияющие на отчет навсегда.


Дополнительная информация:

Dan
8 апреля 2018 в 19:39
0

+1 Ха-ха, спасибо. Я был зарегистрированным пользователем SO в течение 5 лет, поэтому у меня есть довольно хорошее представление о том, как правильно форматировать вопрос.

Dan
8 апреля 2018 в 19:39
0

Есть ли способ сохранить изменения без сохранения? Я заметил, что если я вручную редактирую элемент управления в Layout View ​​до или после запуска макроса, изменения сохраняются при переключении представлений. Поскольку эти макросы прикреплены к настраиваемой ленте, которая используется конечными пользователями для изменения размеров элементов управления, я не хочу произвольно сохранять отчет. (Что, если им не нравятся изменения, которые они внесли в отчет, и они не хотят их сохранять? Они не могут этого сделать, если макросы сохраняют изменения при использовании)