#ms-access #textbox #vba #report
#ms-access #текстовое поле #vba #Сообщить
Вопрос:
У меня есть отчет с кучей элементов управления в разделе сведений. Я работаю с документом Word, который был предоставлен мне в качестве образца, и я воссоздал его в access почти идеально. Что мне нужно сейчас, так это способ справиться с переполнением текстовых полей. У меня включено «Может расти», но вот реальная проблема:
У меня создается поддельная таблица. Несколько текстовых полей, расположенных таким образом, который просто не работает в подчиненной форме. Некоторые ячейки имеют красный, зеленый или желтый фон, в то время как другие просто белые. Когда одно из текстовых полей переполняется и «увеличивается», другие текстовые поля в той же строке остаются того же размера, что и раньше, и это выглядит очень-очень странно (703 твита против 300). Мне бы очень хотелось, чтобы это работало так, как если бы это была таблица в word / Excel, и вся строка увеличивалась бы сразу (all = 703 twips), но, поскольку это не буквально «строка», я просто хочу способ связать высоту этих текстовых полей друг с другом.
Возможно ли что-либо подобное? Если мне нужно что-то уточнить, просто дайте мне знать, я надеюсь, что я предоставил достаточно информации.
Комментарии:
1. где вы установили свойство «CanGrow», для раздела сведений или только для одного элемента управления? Посмотрите, поможет ли установка свойства для всего раздела.
2. Оно устанавливается для всего раздела сведений, а также для каждого элемента управления в нем. Я знаю, что проблема в том, что каждое текстовое поле независимо, мне нужен способ, чтобы они росли вместе, как если бы они были реальной таблицей…
Ответ №1:
В режиме конструктора вашего отчета выберите все элементы управления textbox в разделе сведений и все метки в разделе заголовка страницы. Щелкните правой кнопкой мыши на одном из элементов управления textbox и выберите «Макет» -> «Табличный«. Элементы управления и метки теперь должны совпадать друг с другом.
Вы не указали, какую версию Access используете, но это работает в Access 2007.
Комментарии:
1. На самом деле я только что обнаружил другое обходное решение. Табличный макет невероятно близок к тому, что мне нужно, поэтому я поддержу это, чтобы другие пользователи, просматривающие этот ответ, а также тот, который я опубликую, который позволил отображать больше в виде таблицы. Единственная проблема с табличным макетом заключается в том, что между элементами управления есть пробел, от которого я, похоже, не могу избавиться. В остальном оно абсолютно идеально.
2. Я только что столкнулся с этой же проблемой. Я хотел бы добавить, что я решил проблему интервалов, добавив линии сетки в табличный макет, а затем изменив отступ на 0″ в некоторых ячейках таблицы. Я изменил цвет линии сетки, и теперь все это выглядит точно так же, как и раньше, за исключением того, что вся строка увеличивается вместе с содержимым.
Ответ №2:
Ладно, поехали. Итак, у меня была поддельная таблица, мне нужно было, чтобы вокруг каждого текстового поля были границы таблицы, и когда одно текстовое поле становилось выше других в строке, границы выглядели бы совершенно неправильно. Итак, что нам нужно сделать, это буквально нарисовать отчет во время выполнения, что может быть сделано в любом виде, включая предварительный просмотр. Этот код должен быть помещен в событие печати
'step one. find out which box in the row has the greatest height value.
'You can come across this information however you want.
'It will likely depend on what data goes in the boxes.
'For the sake of the answer length we will skip that actual code
'step two. Take measurements and store them in variables.
'You will need a start point, and an end point in standard (x1,y1),(x2,y2) form.
Dim t As Integer 'top
Dim l As Integer 'left
Dim b As Integer 'bottom
'step three. Use these measurements and draw your lines.
'Try to use looping if your naming and report layout work will allow it.
Me.Line (l, t)-(l, b), RGB(0, 0, 0)
' (x1,y1)(x2,y2),pick a color
'We just drew a line straight down the length of the control
'If you plan ahead, and place a line on the report permanently on top of the first row
'and below every row, you will only need to draw vertical lines.
'The lines below each row will be pushed down by the tallest control
Я надеюсь, что это поможет. Я понятия не имел, что этот материал вообще существовал раньше. Вот информация MSDN об этом:http://msdn.microsoft.com/en-us/library/aa221362(v=office.11).aspx
Комментарии:
1. Ответ ниже моего ответа также очень полезен, многим людям потребуется только то, что указано ниже
Ответ №3:
ОК…
1 — Перейдите в режим конструктора вашего отчета
2 — Выберите ВСЕ элементы управления textbox в разделе сведений, которые вы хотите сделать табличными, и ВСЕ увеличьте, если какой-либо из них увеличится.
3 — Щелкните правой кнопкой мыши на одном из выбранных элементов управления текстового поля и выберите Макет -> Табличный …. но … теперь … после того, как у вас будут элементы управления строками текстового поля в виде табличного макета… Вы должны сделать еще одну вещь…
4 — Внутри свойств ВКЛАДКИ Формат отчетов… Установите для ВСЕХ свойств ЗАПОЛНЕНИЯ значения 0.00 … 0.00 для верхнего заполнения, 0.00 для правого заполнения, 0.00 для левого заполнения и 0.00 для нижнего заполнения. (обычно значение по умолчанию составляет около 0,0208)
5 — Пожалуйста, обратите внимание, что изменение ваших текстовых полей на табличный формат как бы отбрасывает ваши текстовые поля вправо (по крайней мере, для меня), поэтому вам может потребоваться повторно настроить их, чтобы они снова были выровнены с текстовыми полями заголовка вашей страницы (если у вас есть какие-либо, которые вы могли бы использовать для названия заголовков вашей таблицы, например, столбцов).
6 — Убедитесь, что в области сведений убрано ВСЕ СВОБОДНОЕ место, расположив нижнюю панель (нижний колонтитул страницы или отчета) вплотную к нижней части макета текстового поля таблицы, а также проделав то же самое с верхней панелью сведений (заголовок страницы или отчета).
7 — Теперь, когда вы просматриваете свой отчет в режиме предварительного просмотра с максимальным увеличением 200% или более, вы по-прежнему будете видеть очень-очень незначительные промежутки между ячейками в вашем макете, но при фактической печати они будут почти незаметны, если вы не достанете увеличительное стекло.
Ответ №4:
Я нашел решение для своей ситуации, но я хотел бы иметь лучшее… В моем случае текстовое поле с левой стороны описывает содержимое от 1 до 3 картинок с правой стороны. Текстовое поле при увеличении больше высоты первого рисунка сместит рисунки 2 и 3 вниз, несмотря на правильно разработанный атрибут Top в элементах управления picture.
Мое решение: я устанавливаю атрибут высоты текстового поля равным 15 см (например, 2 дюйма) и включаю его как уменьшаемый. Однако, странно, но это помогает расположить изображения в нужных верхних положениях… 🙂 а также минимизировать используемое горизонтальное пространство.