powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в отчёте узнать размер подотчёта?
18 сообщений из 18, страница 1 из 1
Как в отчёте узнать размер подотчёта?
    #32394242
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача:
Есть запрос на фирму и есть запрос на товары этой фирмы и второй на услуги этой фирмы. Требуется вывести всё о фирме (это легко, хотя ...) и требуется вывести все товары продаваемые этой фирмой, если есть таковые, и все услуги также если есть.
Решение:
Я в отчёте ставлю поля от Фирмы и добавляю два подотчёта товары и услуги связанные с основным отчётом ключом.
Результат:
Как располагать подотчёты я не знаю так как кол-во товаров и услуг переменное и получается что товары накладываются на услуги.
Вопрос:
Как мне расположить подотчёт услуги сразу за товарами. Если товаров нет то сразу после заголовка, если товаров 2 то на третьей строке и т.д. Пробовал Height да он возвращает высоту в ДизайнРежиме, а мне надо в предосмотре. Другие команды вообще не доступны.
Вопрос два:
В отчёте пробовал в Поле(Edit) в VB на OnFormat писать информацию edFirmName.Value = "Крокодил" - запускаю отчёт и ... ничего, в edit`е нет моей надписи ПОЧЕМУ?
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394246
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Access XP, 2000
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394247
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свойства Расширение (CanGrow) и Сжатие (CanShrink) определяют вид разделов и элементов управления в форме или в отчете при просмотре или при печати. Например, при заданном для обоих свойств значении «Да» вертикальные размеры раздела или элемента управления автоматически изменяются таким образом, чтобы отобразить или напечатать все данные, содержащиеся в них.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394329
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать всю информацию о фирме, товарах и услугах объединить в один UNION запрос, например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT tblCompany.CompanyID, tblCompany.Company, 
           tblCompany.Address, tblCompany.Phone, tblCompany.Fax, 
            "1  Goods" AS GroupID, tblGoods.Description, tblGoods.Price
FROM tblCompany LEFT JOIN tblGoods ON tblCompany.CompanyID = tblGoods.CompanyID  
UNION
SELECT tblCompany.CompanyID, tblCompany.Company, 
           tblCompany.Address, tblCompany.Phone, tblCompany.Fax, 
            "2  Services" AS GroupID, tblServices.Description, tblServices.Price
FROM tblCompany LEFT JOIN tblServices ON tblCompany.CompanyID = tblServices.CompanyID;
Потом в отчете сделать две группировки: одну по CompanyID, а внутри первой другую по GroupID. С заголовками у второй группировки можно поиграться, чтобы для товаров были свои, для услуг свои.

Ну это так... что первое в голову приходит - практикой не проверял.

PS. Да! Всё это без подотчётов.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394384
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да но ведь у товаров и услуг разное кол-во полей (пример: ОптЦенаТовара, РознЦенаТовара и только ЦенаУслуги) таким образом как объеденять если полей разное кол-во, потому я и создал разное кол-во отчётов. Теперь если объеденять фирму + товары и услуги и если есть товары но нет услуг то запрос ничего не возвращает, по этому я и сделал раздельно. Если знаете подход как этого избежать подскажите.
На счёт изменения значений Edit.Value и Label.Caption я так и не понял почему на экране не отображается?
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394387
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для GEO - я это тоже читал, поигрался с этими свойствами и всё хорошо растягивается НО я размер узнать не могу и расположить второй подОтчёт сразу за первым так-же не выходит без информыции о высоте первого!
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394404
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrikДа но ведь у товаров и услуг разное кол-во полей (пример: ОптЦенаТовара, РознЦенаТовара и только ЦенаУслуги) таким образом как объеденять если полей разное кол-во
Уравнять количество полей можно, например, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT ... 
            "1  Goods" AS GroupID, ОптЦенаТовара AS BuyingPrice, РознЦенаТовара AS SellingPrice
FROM ... 
UNION
SELECT ...
            "2  Services" AS GroupID, Null AS BuyingPrice, ЦенаУслуги AS SellingPrice
FROM ...;
А на событие OnFormat у группировки по GroupID, в зависимости от значения GroupID, двигать и скрывать колонки как нужно.

Что касается второго вопроса, то если TextBox и Label располагаются в том же отделе отчета для которого написан код, то должно работать.

Например, если контролы в верхнем колонтитуле отчёта то:
Код: plaintext
1.
2.
3.
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
Me!MyTextBox.Value =  "Crocodile" 
Me!MyLabel.Caption =  "Crocodile" 
End Sub

если в данных (в Detail) отчёта то:
Код: plaintext
1.
2.
3.
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Me!MyTextBox.Value =  "Crocodile" 
Me!MyLabel.Caption =  "Crocodile" 
End Sub
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394651
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем я всё-же объеденил запросы по товарам и услугам и сам формирую записи(если нет то следующая) спасибо lobodava - НО - при событии Format происходит следующее:
Private Sub ВерхнийКолонтитул_Format(Cancel As Integer, FormatCount As Integer)
str = IIf([Название] = "", "", "Фирма: " & [Название])
edFirmName = str
End Sub
выдаёт ошибку "Приложению 'MS Access' не удаётся найти поле 'Название' указанное в выражении" это как понимать тогда как в RecordSource этого отчёта стоит запрос где есть "Название"?
Пробовал str = Me.Recordset.Fields("Название") говорит "Данное свойство не реализованно для файлов MDB" а это что?
И как я должен заполнять поля отчёта???
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394652
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А если вот так:
Me! Название
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394656
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал на ВерхнийКолонтитул_Print свё тоже.
Да есть ещё вопрос: а как печатать? Я хочу чтоб пользователь посмотрел как это выглядит а затем нажал кнопку печать - а как ведь у кнопки в отчёте нет никаких событий, а как мне отследить нажатие на ней, да и нажать её нельзя тогда зачем она?
А отчёт я делаю модальным чтоб занял всю экранную область и меню соотв. не видно. Как выти из этого положения?
Есть ещё вопрос: как нажать в контекстном меню кнопку настройка печати или печать?
Чтоб эти отчёты провалились.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394657
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Когда отчет открыт в режиме предпросмотра, то работают клавиши:

P - послать на печать
S - зайти в настройки печати

И рекомендую все-таки попробовать то, что я написал в предыдущем посте.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394669
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фигня вот в чём если все поля(Edit`ы) свободные то как Me.Название так и Me!Название выдаёт ошибку, а вот если в любом элементе отчёта (например:Edit) использует [Название] то и Me.Название работает нормально, почему? В форме не нужно так делать, если есть запрос то все поля этого запроса доступны, а в отчёте не так? И что делать?
Невидимые элементы делать мне не очень нравиться да и много их будет.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394670
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А это обращение к полю, не к контролу? В отчете это работать не будет, только в форме.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394685
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В отчёте находится EDIT туда надо записать "ООО" и имя фирмы[Название]
я пишу edFirmName.Value = "ООО" & Me!Название - ошибка
теперь добавляем ещё один EDIT и привязываем его к [Название](ну чтоб он показывал Название) а теперь пишем edFirmName.Value = "ООО" & Me!Название - работает.
Так вот и вопрос почему когда есть другой EDIT использующий [Название] то я в VB могу к нему(к [Название]) обратиться, а если нет то ошибка?
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394687
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Потому что Майкрософт в отчетах это не сделал, а сделал только в формах.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394744
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по моему, выражение типа:
Код: plaintext
IIf([Название] =  "", "  ", " Фирма: " & [Название]) 

Лучше считать в запросе, а не в VBA. Например так:
Код: plaintext
SELECT IIf([Название] =  "", "  ", " Фирма: " & [Название]) AS НазваниеФирмы ...

И тогда TextBox можно будет связать с полем запроса и не мучиться.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32394748
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Как мне расположить подотчёт услуги сразу за товарами.

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

Значит так. Создаем отчет1 - на основе таблицы "Фирмы". Создаем отчет2 и отчет3 на основе таблиц "Услуги" и "Товары" соответственно.

Вставляем отчет2 и отчет3 подчиненными в отчет1 примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
+-Отчет1 ------------------------------------------------------+
 
| Шапка и содержимое отчета  1                                  |
|                                                             |
|  --Отчет2-----------------------------                       |
 
|  --Отчет3-----------------------------                       |
 
|                                                             |
| Примечание отчета1                                          |
+-------------------------------------------------------------+


Где "отчет2" и "отчет3" представляют собой контролы ширины такой же, что и ширина соответствующих отчетов а высотой, скажем, 1 твип (0 кажется не будет работать). Границу у этих двух контровов ставим в "Отсутствует". Ставим им свойства расширение = да. Верхняя граница Отчет3 расположена ниже , чем нижняя граница отчета 2 (оба они выглядят почти как линии, но одна должна быть ниже второй. Все. Само будет работать. Без всяких height.
...
Рейтинг: 0 / 0
Как в отчёте узнать размер подотчёта?
    #32395901
Andrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на самом деле и почему у меня сразу не получилось, я действительно менял эти настройки, и высоту делал 1 и "Расширение" включал и считал что это не помагает, и сделал всё в одном запросе, а на самом деле совет про "Расширение" и есть ответ на топик. Спасибо всем за терпеливую помощь.
А на счёт того как в Edit`ы записывать я так и не понял, сделал прям туда в "данные"=iif(isnull([ИмяФирмы]); ""; "Фирма " & [ИмяФирмы]) ... но у меня там много iif`ов и слишком длинная строка получается по тому и хотелось на VB
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в отчёте узнать размер подотчёта?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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