Как динамически расположить текстовое поле в отчете Access 2003?

У меня есть проект Access 2003 (.ADP), который является интерфейсом к базе данных SQL Server 2005.

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

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

Редко все 8 полей получают значения одновременно. В большинстве случаев значения имеют 2 или 3 поля.

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

Возможно ли это через какой-то обходной код VBA? Если нет, какой другой вариант я могу попробовать? Спасибо.

РЕДАКТИРОВАТЬ - отчет и текстовые поля используются только для представления данных.

1 ответ

Решение

Мне удалось создать эффект, который вы описываете, установив для свойств текстовых полей "Can Shrink" значение "Да", а затем добавив следующий код в On Format событие группы Detail

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Me.lblAccounting.Visible = Not IsNull(Me.txtAccounting.Value)
Me.txtAccounting.Visible = Not IsNull(Me.txtAccounting.Value)
Me.lblFinance.Visible = Not IsNull(Me.txtFinance.Value)
Me.txtFinance.Visible = Not IsNull(Me.txtFinance.Value)
Me.lblMarketing.Visible = Not IsNull(Me.txtMarketing.Value)
Me.txtMarketing.Visible = Not IsNull(Me.txtMarketing.Value)
Me.lblOperations.Visible = Not IsNull(Me.txtOperations.Value)
Me.txtOperations.Visible = Not IsNull(Me.txtOperations.Value)
End Sub

Для тестовых данных

ID  Accounting  Finance  Marketing  Operations
--  ----------  -------  ---------  ----------
 1  a1          f1                  o1        
 2              f2       m2                   

Я получаю следующий результат в режиме предварительного просмотра. Я использую Access 2010, и On Format твики, видимо, не работают в "представлении отчета", но в предварительном просмотре я получаю:

ShrinkingBoxes.png

Вы заметите, что оставшиеся ящики могут не совпадать идеально, если некоторые из них "выжаты". Если бы ваш отчет мог обойтись без границ самих текстовых полей, то расхождение было бы едва заметным. В противном случае вам придется настроить макет, пока он не будет хорошо выглядеть (или, по крайней мере, "достаточно хорош"). Именно так и поступают отчеты по базам данных: потратьте полчаса на то, чтобы все заработало, а затем потратите еще два часа на то, чтобы сделать его "красивым".

Другие вопросы по тегам