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