Как сделать подчиненный отчет access

Обновлено: 01.07.2024

Репутация: нет
Всего: нет

Репутация: 30
Всего: 453

Базу качать не буду - сейчас некогда, но скажу кое-что.
Не насилуйте объектную модель - каждый объект должен отвечать только за себя, никто в его свойства/методы/события своими грязными руками влезать не должен.
Если событие или изменение происходит в подчинённой форме - именно она должна обработать событие/изменение. Если необходимо оповестить о нём главную форму - пусть она вызовет соотв. метод или публичную процедуру/функцию главной формы или создаст соотв. событие для главной формы.
И наоборот.

О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

Репутация: 21
Всего: 21

А вообще использовать в качестве источника данных подчиненную форму это плохое решение. Лучше данные брать непосредственно из таблицы (с редактированием проблем не будет). А показывать данные только выбранной фамилии при помощи фильтра. При этом также стоит с главной формы вынести в подчиненную блок с данными о фамилии.

Если же очень хочется остатся на источнике данных в качестве формы, то стоит писать свою процедуру загрузки данных на главную форму при изменении позиции в подчиенной и тогда котролы станут редактируемыми (Увы, контролы с выражениями не редактируются) и можно будет обрабатывать события об изменениях. Но это гемор. Как это потом сопровождать?

Обрабатываеть события можно только объектов (формы, пользовательские классы). Увы от таблиц не получится. Поэтому можно обработать события поля формы.

Чтобы событие от элемента управления просиходило, необходимо контролу об этом сказать:

Далее объявить ссылку на улемент управления:

И инициализировать ссылку, например при открытии формы

А теперь объясните, зачем такие сложности? Мне очень любопытно.

Репутация: нет
Всего: нет

Я не понимаю, что вызывает у вас такое удивление, если честно)

Говорите, лучше данные брать непосредственно из таблицы?
я беру их не из таблицы, а через подчиненную, не потому, что боюсь каких-то проблем с редактированием
(к слову, редактировать мне ничего не нужно)
а потому, что так нагляднее

объясняю:
вы когда нибудь видели на одной главной форме две, связанные между собой подчиненные формы?
ну, первая подчиненная - список организаций, вторая - подробности каждой?
У меня получается практически так же с отличием в том, что вторую подчиненную я не делаю, перенеся ее функционал на главную.
Подчиненная форма вывела все имена.
Выбрали какое-то имя, кликнули, рядом в полях - все подробности.

Это удобно? Да.
А какую альтернативу вы можете предложить? Напишите. Может, ваше предложение действительно интереснее.

Вопрос состоял как раз в том, о чем сказал(а) Akina:
"Если событие или изменение происходит в подчинённой форме - именно она должна обработать событие/изменение. Если необходимо оповестить о нём главную форму - пусть она вызовет соотв. метод или публичную процедуру/функцию главной формы или создаст соотв. событие для главной формы.
И наоборот. "

какое событие происходит?
то есть к какой-то записи в подчиненной форме пришел фокус
но подчиненная форма имеет ленточную структуру
запись подчиненной формы получает 1 раз, при загрузке
значит, дело не в этом

изменилась текущая запись?
ну да, нужно отследить, что пользователь в подчиненной форме тыкнул на вторую\пятую\десятую запись
вот тут, каким событием отслеживается изменение текущей записи в подчиненной форме, у меня и возник вопрос

еще мне подумалось, что можно пойти другим путем
и не ловить то, что происходит в подчиненной

а поймать тогда, когда полю главной будет присвоено новое значение
и опять же не известно мне, каким событием это можно отследить

Что касается высказывания про "влезание своими грязными руками", то хотелось бы уточнить, действительно ли вы считаете присвоение полю какого-то значения через конструктор, а не исключительно программным способом, "влезанием", и всегда ли вы считаете, что у программистов "грязные руки"?

Не просто так приложена была база,
она абсолютно не нагруженна лишними деталями
зато тут же ставит все на свои места и становится понятнее, что собственно нужно, где и как.
Уж кому, как не вам знать, что объяснение словами бывает запутаннее, чем суть на самом деле.

Репутация: 21
Всего: 21

Цитата(Laky @ 7.4.2009, 17:38 )
вы когда нибудь видели на одной главной форме две, связанные между собой подчиненные формы?

Я даже так делаю.

Цитата(Laky @ 7.4.2009, 17:38 )
А какую альтернативу вы можете предложить? Напишите. Может, ваше предложение действительно интереснее.

Я изложил выше. Взаимодействие 3-х форм. 1-а главная, 2-е подчиненные.

Цитата(Laky @ 7.4.2009, 17:38 )
вот тут, каким событием отслеживается изменение текущей записи в подчиненной форме, у меня и возник вопрос

Событие так и называется Текущая запись или Current.

Цитата(Laky @ 7.4.2009, 17:38 )
Уж кому, как не вам знать, что объяснение словами бывает запутаннее, чем суть на самом деле.

Ни слова, ни база не показали мне то, что хотите вы получить.

Чтобы не быть голословным и показать насколько вы усложняете, я выложу пример чуть позже.

Репутация: 21
Всего: 21

Вот пример, как обещал.
Обратите внимание, что подчиненные формы ничего не знают о друг друге и главной форме. Только главная форма разруливает события!

Присоединённый файл ( Кол-во скачиваний: 35 )
TwoFormsOnMain.zip 18,11 Kb

Репутация: нет
Всего: нет

все замечательно
за исключением 2 моментов:
1) вы прекрасно показали, как можно организовать фильтр через главную
и формы подчиненные друг о друге ничего не знают
это конечно здорово
только фильтр мне совершенно ни к чему
у меня по сути просто выводится вся таблица, без всяких заморочек
да и хвататет у меня сложных мест, чтобы еще вот с простым выводом изощряться
поэтому ваш пример мне не полезен в поиске ответа на мой вопрос (потому что вопрос в другом заключался)

2) мне на будущее: баг у вас в программе, вот от него как прикажете избавляться?

теперь, возвращаясь к моим баранам, попрошу вас на своем (то есть на вашем) примере поразмыслить:
пусть, как только вы выбрали Фирму 1, Label0 на второй подчиненной форме поменяет цвет шрифта, если же другую - вернется к черному (или любой другое свойство свое поменяет)
как только получится - тогда будет мне счастье, ибо вы найдете ответ на мой вопрос

Репутация: 30
Всего: 453

Код

Private Sub m_frmKlientSpis_OnKlientSelect(ByVal lK_KLIENT As Long)
Dim stFilter As String

stFilter = "K_KLIENT = " & lK_KLIENT

О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

Репутация: нет
Всего: нет

Akina, это не общее решение
а если у вас 11000 записей?
а поменять цвет текста лейбла вам надо только тогда, когда название будет заканчиваться на "а" например?

в чем у меня состоял вопрос:
If pol.value = True Then Label.caption = "мужской" Else Label.caption = "женский"

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

только в такие моменты понимаешь всю серьезность и сложность труда специалистов, ориентированных на написание ТЗ.

Репутация: 30
Всего: 453

Цитата(Laky @ 8.4.2009, 21:56 )
Akina, это не общее решение
а если у вас 11000 записей?
а поменять цвет текста лейбла вам надо только тогда, когда название будет заканчиваться на "а" например?


Так Вам ещё и разжевать, как по индексу записи получить её содержимое? Неужели нельзя самостоятельно сделать такую простую вещь?
А суть везде одна и та же - сообщить главной форме о событии в подчинённой, чтобы она выполнила необходимые действия в другой подчинённой. А будет там IF или CASE, одно простое условие или десяток навороченных - какая разница?

О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

Репутация: 21
Всего: 21

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

А теперь к делу.

Цитата(Laky @ 8.4.2009, 20:56 )
эту строчку надо было прописать в правильном событии

Дело не в событии. Access еще и выражения поддерживает. Например, Iif, который можно использовать в источнике данных.
Получается для поля в источнике данных можно написать так: = Iif([pol];"мужской";"женский"). Только это плохое решение. Практика показала, что лучше использовать справочник. Что будет, если пол не определен?

И будет вам счастье.

Цитата(Laky @ 8.4.2009, 20:56 )
поменять цвет текста лейбла вам надо только тогда, когда название будет заканчиваться на "а" например?
Код

'-- .
If Right(Me.T_KLIETN, 1) = "а" Then
.Controls("label1").ForeColor = RGB(255, 0, 0)
End If
'-- .

Учитесь программировать или, например, заплатите мне денег и я вам напишу .

Цитата(Laky @ 8.4.2009, 20:56 )
только в такие моменты понимаешь всю серьезность и сложность труда специалистов, ориентированных на написание ТЗ.

Ой, вот только не нужно перетаскивать одеяло на себя. А то холивар получится.

Цитата(Laky @ 8.4.2009, 19:15 )
2) мне на будущее: баг у вас в программе, вот от него как прикажете избавляться?

Репутация: 30
Всего: 453

О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

Репутация: нет
Всего: нет

Akina, bopoha
спасибо большое за помощь

спасибо за подсказку
получилось
все получилось
и даже изменение лейбла главной по значению подчиненной, когда запись выбирается во второй подчиненной)
можно не пытаться понять)

Репутация: нет
Всего: нет

Цитата(bopoha @ 8.4.2009, 16:28)
Вот пример, как обещал.
.
При этом подчиненные формы можно использовать повторно не зависимо друг от друга.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

[ Время генерации скрипта: 0.1587 ] [ Использовано запросов: 21 ] [ GZIP включён ]

В этом уроке вы узнаете, как использовать Мастер отчетов для создания сложных отчетов. Вы также узнаете, как использовать Access параметры форматирования для форматирования текста, отчет об изменениях цвета и шрифтов, и добавить логотип.

Мастер отчетов

Чтобы создать отчет с помощью Мастера отчетов:

Шаг 1. Выберите поля для включения в отчет.

Шаг 2. Организуйте отчет

Мастер отчетов предоставит вам параметры, позволяющие выбрать способ просмотра и организации ваших данных. Эти параметры группируются как данные в ваших полях и упорядочивают эти поля на несколько уровней, например, в сводном или маркированном списке.

Если вы создаете отчет только из одной таблицы или запроса, вы можете перейти к № 3 в этом разделе.

Шаг 3. Сортировка данных отчета.

В зависимости от выбранной вами группы данных ваши параметры сортировки могут быть ограничены.

Шаг 4: Выберите макет и заголовок

Как и в случае с другими отчетами, вам может потребоваться настроить размер и местоположение поля и строки, чтобы убедиться, что все ваши данные соответствуют вашему желанию.

Форматирование отчетов

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

Изменение текста отчета

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

Дополнительные параметры отчета в Access

Изменение заголовка и нижнего колонтитула страницы

Дополнительные параметры отчета в Access

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

Дополнительные параметры отчета в Access

Чтобы добавить текст в верхний или нижний колонтитул:

Чтобы добавить дату и время в верхний или нижний колонтитул:

По умолчанию в заголовке отображаются дата и время . Если вы хотите переместить их в нижний колонтитул, щелкните по дате и времени и перетащите их в нужное место.

Чтобы добавить номера страниц в верхний или нижний колонтитул:

Улучшение внешнего вида отчета

Чтобы добавить логотип:

Темы и шрифты

Тема представляет собой набор цветов и шрифтов, которая распространяется на всю базу данных, чтобы дать ему последовательный, профессиональный вид. По умолчанию базы данных используют тему Office. Когда вы меняете тему, все шрифты и цвета темы в вашей базе данных меняются в соответствии с новой темой. Конструирование и изменение отчетов с использованием элементов темы может помочь вам сохранить согласованность ваших отчетов.

Отчет это инструмент, используемый для обобщения и представления данных в упорядоченном формате, обычно распечатанном. Отчеты и Формы похожи, но формы используются для просмотра, ввода и редактирования данных и предоставляют подробный обзор записей и обычно отображаются на экране. Отчеты используются для просмотра информации, обобщения и группировки данных, а также для просмотра на экране, но обычно распечатываются.

Инструменты дизайна отчетов в Access

  • Отчет: Создать базовый Отчет данных в текущем Запрос или же Стол что может добавить Группы или же Общий
  • Дизайн отчета: Создать новый Пустой отчет в Просмотр дизайна. В отчет можно вносить расширенные изменения дизайна, например добавлять настраиваемые типы элементов управления и коды.
  • Пустой отчет: Создать новый Пустой отчет так что вы можете вставить Поля и разработать Отчет.
  • Мастер отчетов: Отображает Мастер отчетов который поможет вам создать простой индивидуальный Отчет.
  • Этикетки: Показать Мастер этикеток для создания стандартных или нестандартных этикеток.

Как создать отчет с помощью Microsoft Access

1]Создайте отчет с помощью инструмента отчета

создать отчет с помощью Microsoft Access

Перейти к Создавать вкладка в Группа отчетовщелкните значок Группа отчетов. А Отчет создается быстро. В отличие от Форма, Отчеты нельзя редактировать, но вы можете изменить свой Отчет регулируя колонку; щелкнув столбец, появится желтая рамка, и вы можете перетащить край столбца на желаемую длину.

К Удалить столбец или строка вам не нужны. Щелкните правой кнопкой мыши строку или столбец и щелкните Удалить. В Отчет следует изменить в Просмотр макета.

2]Создайте отчет, используя дизайн отчета


в Группа отчетов , Выбрать Дизайн отчета ; это приведет вас к Просмотр дизайна отображать. В Просмотр дизайна состоит из таких разделов, как Заголовок страницы , Подробности , и Нижний колонтитул страницы .

Чтобы добавить данные в пустой макет, щелкните Свойство , затем щелкните стрелку раскрывающегося меню над Лист свойств, теперь выберите Отчет . Нажмите Данные . На Источник записи в раскрывающемся меню выберите свой Запрос или же Стол вы хотите использовать в своем Отчет .

Щелкните значок Добавить существующие поля . Щелкните значок Поля вы хотите добавить к Отчет и перетащите их в Подробный раздел.

Перейти к предварительному просмотру. Вы увидите свой отчет в распечатанном виде. В левом нижнем углу Просмотр для печати , Существуют Кнопки навигации которые позволяют вам перемещаться по Отчет .

Чтобы вернуться к Просмотр дизайна , закройте Предварительный просмотр печати нажав на Закройте Кнопка просмотра печати в правом верхнем углу окна.

3]Создайте отчет, используя пустой отчет


На Создавать вкладка в Группа отчетов, выберите Пустой отчет Инструмент.

Справа от Окно инструментов макета отчета, Выбирать Добавить существующие поля. Существует Список полей; щелкните поле и перетащите его на пустое место. Затем перейдите в Предварительный просмотр печати; вы увидите распечатку вашего Отчет.

4]Создайте отчет с помощью мастера отчетов


в Группа отчетов, Выбрать Мастер отчетов, а Диалоговое окно мастера отчетов будет появляться.

в Диалоговое окно, выберите Таблицу и Поля ты хотел быть в своем Отчет. Нажимая эти кнопки (>, >>,

Создание отчета в Access с помощью мастера

Создание отчета в Access с помощью мастера

После запуска мастера построения отчета, на экране откроется окно диалога. в котором необходимо определить поля будущего отчета (рисунок 4.1). Необходимо нажать кнопку раскрытия списка Таблицы и запросы и из списка таблиц баз данных выбрать таблицу, для которой создается отчет. При этом в списке Доступные поля появляется перечень всех полей выбранной таблицы. Необходимо из данного перечня перенести в список Выбранные поля — поля, которые надо поместить в создаваемый отчет. Завершив выбор полей, необходимо нажать кнопку Далее для перехода к следующему шагу.

На втором шаге создания отчета с помощью мастера необходимо определить, требуется ли сгруппировать данные по какому-либо из полей (рисунок 4.2). Если поля не группировать, отчет произведет итоговые вычисления по всем полям с числовым типом данных для всей таблицы или запроса, на которых он основан. Можно для группировки выбрать одно поле. В этом случае отчет обеспечит для группы промежуточные вычисления, а для таблицы целиком — итоговую сумму. Можно применять до четырех группировок, вложенных одна в другую. Этот отчет включает итоговое вычисление, промежуточные результаты и подпромежуточные результаты для всех групп. Поля, по которым будет осуществляться группировка, помещаются в верхней части правого списка в отдельной рамке и выделяются на экране синим цветом. Access предлагает свой вариант группировки данных. Можно согласиться с предложенным вариантом или задать свой, используя кнопки окна диалога (таблица 4.1).

Создание отчета в Access с помощью мастера


Рис. 4.1 — Окно диалога для выбора полей отчета — Создание отчета в Access с помощью мастера

Создание отчета в Access с помощью мастера


Рис. 4.2 — Создание отчета в Access с помощью мастера отчетов, шаг второй — Создание отчета в Access с помощью мастера

Создание отчета в Access с помощью мастера


Таблица 4.1 — Назначение кнопок окна диалога при определении группировки — Создание отчета в Access с помощью мастера

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

  • просмотр отчета;
  • изменение структуры отчета.

Создание отчета в Access с помощью мастера


Рис 4.3 — Создание таблиц с помощью Мастера отчетов, шаг третий

Для закрепления темы Способы создания отчета в Microsoft Office Access смотрим видеоурок:

Читайте также: