powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Высота полей в сложном отчете
24 сообщений из 24, страница 1 из 1
Высота полей в сложном отчете
    #35544092
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здрасте всем.

Помогите в решении проблемы - нужно сделать изменяемой высоту полей в строках отчета.
Отчет сложный (поля друг над другом), ума не приложу, как это можно сделать.

На приложенной картинке видно как расширена нижняя ячейка в одной из строк, это полбеды, можно и так оставить. Но мне нужно сделать изменяемыми поля отчета, отмеченные красными стрелками, при этом как-то добиться синхронного изменения размеров остальных полей, чтобы строка с расширенными полями выглядела ровной (к примеру, как первая строка в отчете), то есть подогнать размеры полей всей строки под данные.

Как этого добиться?

Еще была мысль, делать каким-то образом вывод в Excel (он ведь все ячейки в строке выравнивает по высоте), но как это сделать тоже не знаю.

Самым лучшим вариантом будет всё же вывод отчета только в Access'e, без использования Excel.

Помогите, а?
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544181
im_vooov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите на leadersoft.ru/ , в базах с примерами.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544656
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел. Там речь идет о высоте строк с полями расположенными в линию. У меня же поля расположены одно над другим.
И как при этом вычислить что нужно изменять а что нет?
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544710
_restavraciya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бредовый вариант:
- открываете первый раз (hide), изымаете размеры отступы и тп
- закрываете
- открываете второй раз (visible) с исправлением координат и размеров

Не проверял
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544767
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один геморройный вариант:
1. На событие открытия отчета считываем в массив высоту нижних полей + Top резиновых полей нижнего ряда(тех что со стрелками).
2. В событи Print секции сначала восстанавливаем положение и размеры полей нижнего ряда из массива. (поскольку они могли измениться в предыдущей записи)
3. Далее анализируем как изменились высоты резиновых полей. Перемещаем резиновые поля нижнего ряда на нужную высоту, если изменилась высота резиновых полей верхнего ряда(со стрелками).
4. Проверяем как изменилась высота резиновых полей нижнего ряда(со стрелками).
5. Вычисляем получившуюся максимальную высоту секции.
6. Подгоняем высоту полей нижнего ряда, которые без стрелок, под край (максимальная высота секции).

Если что-то упустил - по ходу всплывет.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544782
KrukVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nord-woolf2. В событи Print секции сначала восстанавливаем положение и размеры полей нижнего ряда из массива.
Вроде нельзя в событии принт менять размеры и позицию контролов.
Рисование поможет (имхо)
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544789
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А насколько важно дробить адрес по вертикали ? И дату/время ? Проще и дешевле выводить адрес склеенный и из нескольких строк (можно с переводом строки) в одной ячейке. Обработка тогда сильно упростится - достаточно растянуть все поля по высоте поля адреса.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544812
Фотография nord-woolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KrukVN nord-woolf2. В событи Print секции сначала восстанавливаем положение и размеры полей нижнего ряда из массива.
Вроде нельзя в событии принт менять размеры и позицию контролов.
Рисование поможет (имхо)

Точно, сглючило.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544875
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KrukVN nord-woolf2. В событи Print секции сначала восстанавливаем положение и размеры полей нижнего ряда из массива.
Вроде нельзя в событии принт менять размеры и позицию контролов.
Рисование поможет (имхо)
Похоже, что нельзя. У меня:
Код: plaintext
Me.Section(acDetail).Controls("PointAddressFrom").Top = *значение*
не вышло

Не дробить адрес? А как иначе его уместить в поле?
Если растянуть все поля по высоте заранее (ну допустим, на 3 строки текста) то получается не экономичное использование площади листа.

Адреса ведь не всегда длинные. Иногда умещаются и в одну строку текста
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544898
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас же адрес состоит из трех полей. Вот и склейте их в одну ддинную строку с нью лайн между отдельными полями. Вид будет такой же как сейчас, но без горизонтальных линеечек в общем поле адреса.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35544957
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, адрес не из трех полей.
Точнее не совсем так.
Точка разгрузки/выгрузки имеет три поля, действительно.
Важно их разделить как предложено в моем макете отчета. Такова форма. :(
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35545701
im_vooov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, посмотрите, я вам немного переделал пример от LeaderSoft. Лепил по быстрому, но надеюсь пример понятен.

Успехов.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35545714
im_vooov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот код работает и для разной высоты полей, стоящих друг над другом. Код не менял, изменил только структуру отчета.

LeaderSoft огромное спасибо за предоставленный пример.
...а то они на сайте, совершенно обоснованно, обижаются, что их копируют без копирайтов.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35545723
Фотография ruprext
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот еще код, делает то же самое... использовал сначала код от лидерсофта но в некоторых отчетах границы полей немного смещались, было некрасиво... нашел этот, автора не помню но спасибо ему за старания
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Public Sub DrawTableInDetailSection(objReportSection As Section)
'==============================================================

'Для "красивого" обрамления в таблицу области данных табличного
'отчета c изменяемой высотой полей (и соответственно строк целиком).
'Аргумент: objReportSection = Ссылка на область данных отчета
' "Вешается" на событие PRINT области данных отчета - например так:
'     Call DrawTableInDetailSection(Me.ОбластьДанных)
'Разумеется контуры полей в области данных отчета должны быть невидимы
'==============================================================
Dim DataControl As Control    'обект текущ. контроль
Dim x As Integer
Dim MaxHeight As Integer      'макс. высота в тек строке
Dim MinX As Integer           'координата начала горизонтальной линии
Dim MaxX As Integer           'координата конца горизонтальной линии
Dim StartX As Integer         'координата начала линии по оси X
Dim EndX As Integer           'координата конца линии по оси X
Dim StartY As Integer         'координата начала линии по оси Y
Dim EndY As Integer           'координата конца линии по оси Y

On Error GoTo DrawTableInDetailSectionERR
    MaxX =  0 
    MinX = objReportSection.Parent.Width
    With objReportSection
        'Находим макс высоту в строке
            For Each DataControl In .Controls
                x = DataControl.Height
                If MaxHeight < x Then MaxHeight = x
                
                x = DataControl.Left + DataControl.Width
                If MaxX < x Then MaxX = x
                
                x = DataControl.Left
                If MinX > x Then MinX = x
                    
            Next
        'рисуем вертикальную в Начале строки
            EndY = MaxHeight
            .Parent.Line (MinX, StartY)-(MinX, EndY)
        'рисуем горизонтальную Над строкой
            .Parent.Line (MinX, StartY)-(MaxX, StartY)
        
        'рисуем горизонтальную под строкой
            .Parent.Line (MinX, EndY)-(MaxX, EndY)
        
        'рисуем вертикальные линии справа от каждого контрола
            For Each DataControl In .Controls
                StartX = DataControl.Left + DataControl.Width
                EndX = StartX
                .Parent.Line (StartX, StartY)-(StartX, EndY)
            Next
    End With
    Exit Sub

DrawTableInDetailSectionERR:
    Err.Clear
End Sub

...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35545983
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Супер! Ребята, спасибо всем, всё получилось!

Еще вопросик появился - при построении отчета иногда бывает, что остается пустое место на странице - можно ли как-то "добить" это пустое место пустыми строками? чтобы можно было потом туда от руки что-то вписывать, прям на бумаге?

Чтобы нашим водителям по линейке не расчерчивать..
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35546589
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел по форуму - нет решения для моей задачи.
Как нарисовать в отчете пустые поля до конца страницы?
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35546961
В принципе это возможно.
У отчета есть свойство Me.NextRecord. Если ему указать True, то запись будет продублирована, а если при этом цвет шрифта в дубле сделать тем же, что и цвет фона - поля будут пустыми.
Это делается на событие Format области "Данные" последней записи, но вам нужно будет как-то знать, что это последняя запись, и сколько дублей вместится до конца страницы.
ИМХО - геморрой.
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35546990
Фотография RADDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzov...иногда бывает, что остается пустое место на странице ....

...вся проблема в этом - иногда бывает - иногда не бывает...
если с этим не заморачиватся, а добавлять пустые всегда, то все решаемо - ...можно в примечании отчета просто линиями намалевать...
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35548964
Anton Klyauzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
иногда - у нас почти всегда. :)

что касается линий в примечании - они же постоянно будут выводиться. а нужно - только когда пустое место на странице остается
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35549051
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Klyauzovчто касается линий в примечании - они же постоянно будут выводиться. а нужно - только когда пустое место на странице остается
А как же тогда шоферы? Забыли рабочего человека

Anton KlyauzovЧтобы нашим водителям по линейке не расчерчивать..
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #35758715
vso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vso
Гость
Скачал пример, посмотрел и возник вопросик....

а почему используется обрисовка, а не скажем изменение высоты поля в которм еще в конструкторе задан цвет, тип и толжина границы????????
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Высота полей в сложном отчете
    #39155146
blyus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для тех кто не очень владеет с vba есть очень простой способ. В режиме макета выбираете все поля которые должны быть выведены в виде таблице. Правой клавишей выбираем "макет" далее "в виде таблице. И у вас все эти элементы становятся связанными. Далее при выделении любого поля этой таблице в верхнем правом углу появляется квадратик. Нажав на него выделяется вся группа элементов. Этой группе можно задать свойства как полю, тип границы, расширение, и другие. Access 2016.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Высота полей в сложном отчете
    #39727574
Upgrader
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ruprextвот еще код, делает то же самое... использовал сначала код от лидерсофта но в некоторых отчетах границы полей немного смещались, было некрасиво... нашел этот, автора не помню но спасибо ему за старания
Отличный код. Только у меня небольшая проблемка:
Почему такое может быть, что делаю так как в примере:
Код: vbnet
1.
Call DrawTableInDetailSection(Me.ОбластьДанных)

А рисует мне таблицу не в "области данных", а в "заголовке отчета", беря при этом за основу таблицу из "верхнего колонтитула"?
Как его заставить рисовать в "Области данных"?
Я уже все перепробовал, не пойму в чем дело...
...
Рейтинг: 0 / 0
Высота полей в сложном отчете
    #39727580
Upgrader
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UpgraderКак его заставить рисовать в "Области данных"?
Все понял, решено. Надо было именно в print области данных вызывать.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Высота полей в сложном отчете
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]