powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Привиредливый заказчик
8 сообщений из 8, страница 1 из 1
Привиредливый заказчик
    #32448306
SM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заказчик очень хочет видеть отчет в точно такой же форме как он привык видеть в EXCEL

отчет о заказе -

в заголоке инфа о клиенте, куда и когда доставлять и все такое.
В примечании - итоги
В теле (подчиненный отчет) - список заказанного с количеством и ценами.

Вопрос в том, что примечание отчета всегда должно располагаться в конце страницы - то есть если заказан всего один продукт - то пустое место в середине отчета должно быть заполнено пустыми линейками/клетками - точно так же, как если бы использовался шаблон из EXCEL

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

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

У кого какие идеи на этот счет? Поделитесь :)
...
Рейтинг: 0 / 0
Привиредливый заказчик
    #32448308
VR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО проще всего сделать в самом Excel:
-сделать красивый шаблон
-наметить в какие ячейки что вставлять
-управлять Экселом из Access

Я такое лет 5 назад в Access 97 c Вордом делал (сложные накладные и прочая байда)
...
Рейтинг: 0 / 0
Привиредливый заказчик
    #32448481
e_basil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я размещаю итоги в примечании отчета и пытаюсь убедить заказчика, что так лучше.
...
Рейтинг: 0 / 0
Привиредливый заказчик
    #32448490
e_basil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e_basil я размещаю итоги в примечании отчета и пытаюсь убедить заказчика, что так лучше.
хотел сказать в заголовке
...
Рейтинг: 0 / 0
Привиредливый заказчик
    #32448501
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предложи заказчику печатать на разлинованной бумаге :)
...
Рейтинг: 0 / 0
Привиредливый заказчик
    #32451931
SM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--предложи заказчику печатать на разлинованной бумаге :)

Злой ты :)

А все таки кто знает как можно определить высоту подчинённого отчета после форматирования? :)
...
Рейтинг: 0 / 0
Привиредливый заказчик
    #32452033
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один из способов: добавить в подчиненный отчет в область данных невидимое (или воспользоваться видимым, если оно уже есть) поле с источником данных "=1" и с "Суммой с накоплением" (RunningSum) ="Для всего". В главном отчете можно узнать кол-во строк подчиненного посредством Reports!Главный!Подчиненный.Report!СуммирующееПоле.
...
Рейтинг: 0 / 0
Привиредливый заказчик
    #32452133
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу линеечек и как узнать высоту подчиненного отчёта (правда, на кой использовать подчиненный отчёт?... ну да ладно, может там сложно всё:))

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

Алгоритм такой:

1. Создаём временную таблицу и вставляем туда записи которые должны показаться в отчёте.

2. Открываем новый модуль в котором объявляем массив данных пользовательского типа
Код: plaintext
1.
2.
3.
4.
5.
Public Type RecordInfo
    RecordHeight As Long
    Amount As Currency
End Type

Public gaRecordInfo() As RecordInfo

3. Пишем в том же модуле Public Sub где считаем сколько записей во временной таблице и объявляем размерность массива:
Код: plaintext
ReDim gaRecordInfo(rst.RecordCount)

4. В этой Public Sub открываем измерительный отчёт, основанный на той же временной таблице, со следующим кодом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
    MoveLayout = False
    NextRecord = True
    PrintSection = True

    gaRecordInfo(Me.tboCounter).RecordHeight = Me.tboDescription.Height
    gaRecordInfo(Me.tboCounter).Amount = Nz(Me.tboAmount,  0 )
End Sub
где tboCounter это TextBox в разделе данных со свойствами как советовал Geo, а tboDescription - описание продукта, которое мы и измеряем (ширина, шрифт и т.д. должны быть такими же как и в основном отчёте).

5. Теперь зная высоту всех строк и высоту тела отчёта, которое требуется заполнить линейками, можно посчитать сколько пустых записей нужно добавить во временную таблицу, чтобы линейки были до конца. А если страниц будет несколько, то можно высчитать какие строки на какую страницу попадут... и тогда можно посчитать сумму за каждую страницу (и, например, вынести их на первую страницу - но это уже дебри)


Это всё, конечно, сложно и работает медленно, но требуемого результата можно добиться не прибегая к Word'у и Excel'ю. Я таки вам скажу - такие чудеса можно делать... Вах!!!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Привиредливый заказчик
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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