Подождите ...

[Общение][Свободная тема и полезные советы]
Отчёт: Список читателей имеющих книги на руках, число этих книг и самая ранняя дата возврата из этих книг


Как создать отчет содержащий одновременно следующие данные:<br><br>+ Список читателей имеющих книги на руках<br>+ Число книг на руках для каждого читателя<br>+ Самую раннюю дату возврата одной из имеющихся книг у читателя



02.02.2018 22:27
FreeMind
Модератор
633 368

Отчёт: Список читателей имеющих книги на руках, число этих книг и самая ранняя дата возврата из этих книг



Как создать отчет содержащий одновременно следующие данные:

+ Список читателей имеющих книги на руках
+ Число книг на руках для каждого читателя
+ Самую раннюю дату возврата одной из имеющихся книг у читателя
0
+0
-0
На голосовании
02.02.2018 22:45
# FreeMind  Модератор  633 368 +0
Для демо БД StateLibrary результат отчёта будет выглядеть так:
id (читателя)	ФИО	Кол-во книг	Мин дата возврата
1	Иванов Иван Иваныч	2	01.01.2017
2	Петров Петр Петрович	1	01.01.2022
3	Сидоров Сидор Сидорович	1	20.01.2018


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


Пояснения:

У "Иванов Иван Иваныч" имеется на руках 2 книги, одна с датой возврата "01.01.2022" и одна "01.01.2017". В отчете для него показана самая ранняя дата возврата из книг имеющихся на руках - "01.01.2017".

У "Петров Петр Петрович" имеется на руках 1 книга с датой возврата "01.01.2022".

У "Сидоров Сидор Сидорович" имеется на руках 1 книга с датой возврата "20.01.2018".
02.02.2018 23:26
# FreeMind  Модератор  633 368 +0
Как создать отчет:

1. Переходим на вкладку "Статистика"

2. Щелкаем на папке "Отчеты по карточкам книг" правой кнопкой мыши.

3. В открывшемся контекстном меню выбираем "Создать подотчёт".

4. Щелкаем по появившейся в списке записи "Новый отчет".

5. Заполняем параметры отчёта:

Название отчета = "Список читателей имеющий книги на руках, число этих книг и самая ранняя дата возврата"

Тип отчета = "Таблица"

Описание отчета = "Ваше описание отчёта..."


6. Вкладка [Условие выборки и сортировка]

6.1. На панели "Условие на выбор записей, которые попадут в отчёт" нажимаем кнопку "Изменить"

В открывшемся окне "Выбор условия" на вкладке [Карточки книг] нажимаем кнопку "Изменить"

В открывшемся окне вводим новое условие:
Временное место хранения "не пусто"

Нажимаем "ОК" и после закрытия окна видим на вкладке [Карточки книг] текст:
(Временное место хранения <> NULL)

а ниже на панели "Результирующее условие" текст:
[Карточки книг]=
(Временное место хранения <> NULL)

нажимаем "ОК" и окно "Выбор условия" закрывается, при этом на панели "Условие на выбор записей, которые попадут в отчёт" видим указанное ранее нами условие:
[Карточки книг]=
(Временное место хранения <> NULL)


6.2. На панели [Атрибуты необходимые в отчете и их порядок] нажимаем кнопку "Изменить"

В открывшемся окне выбираем вкладку "Карточки читателей",
дважды щелкаем на строке "id (номер карточки читателя)" и атрибут переносится в правый список "Выбранные колонки". Повторяем это же действие с атрибутом "Фамилия Имя Отчество". В итоге в правом списке у нас будет две строки:
"id (номер карточки читателя)"
"Фамилия Имя Отчество"

Нажимаем кнопку "ОК", окно закрывается и на панели [Атрибуты необходимые в отчете и их порядок] мы видим две записи:
[Карточки читателей].id (номер карточки читателя)
[Карточки читателей].Фамилия Имя Отчество

Нажимаем подсвеченную желтым цветом кнопку "Сохранить" и зеленую кнопку "Сформировать результат отчёта >>", что бы увидеть, что на данный момент у нас получилось.

id (читателя)	Фамилия Имя Отчество
1	Иванов Иван Иваныч
1	Иванов Иван Иваныч
2	Петров Петр Петрович
3	Сидоров Сидор Сидорович

02.02.2018 23:37
# FreeMind  Модератор  633 368 +0
Пояснения:

На данный момент мы вывели все карточки книг у которых Временное место хранения "не пусто", при этом в отчете отображаются атрибуты этих не пустых временных мест хранения:
"id (номер карточки читателя)"
"Фамилия Имя Отчество"

В таблице карточек книг есть две записи (карточки), где "Временное место хранения" = "Иванов Иван Иваныч", поэтому для каждой этой записи в отчете создалась своя строчка.
03.02.2018 00:03
# FreeMind  Модератор  633 368 +0
Для того, что бы в отчете каждому читателю соответствовала только одна строчка, в которой отображалась обобщенная для него информация, необходимо включить группировку:

7. Вкладка [Группировка (кол-во, сумма, среднее, мин, макс)]

Устанавливаем галочку "Использовать группировку по атрибутам необходимым в отчете"

На свободном месте появившейся панели жмем ПКМ, в появившемся контекстном меню выбираем "Добавить дополнительное поле".

В появившемся окне заполняем параметры доп.поля:
Название="Кол-во книг"
Тип="Счётчик"

Нажимаем "ОК"

В появившемся окне "Выбор условия" нажимаем кнопку "Отмена".

Появится новое окно "Редактирование действия", в нем:
в текстовое поле "Значение" пишем вручную текст "= +1" или просто дважды щелкаем на "+1" в нижнем поле для выбора значений и текст "= +1" будет установлен в поле "Значение" автоматически.

Нажимаем "ОК"

Окно "Редактирование действия" закрывается и мы видим в таблице информацию о новом созданном дополнительном поле:

Название колонки       Ф-ция       Условие       Действие
Кол-во книг                 Счётчик                              = +1


Нажимаем подсвеченную желтым цветом кнопку "Сохранить" и зеленую кнопку "Сформировать результат отчёта >>", что бы увидеть, что на данный момент у нас получилось.
 
id (читателя)	ФИО	Кол-во книг
1	Иванов Иван Иваныч	2
2	Петров Петр Петрович	1
3	Сидоров Сидор Сидорович	1

03.02.2018 00:51
# FreeMind  Модератор  633 368 +0
Пояснения:

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

В нашем случае это атрибуты
[Карточки читателей].id (номер карточки читателя)
[Карточки читателей].Фамилия Имя Отчество

т.е. группировка будет выполняться именно по этим атрибутам.

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

В нашем случае есть 2 карточки в которых атрибуты
"id (номер карточки читателя)"
"Фамилия Имя Отчество"
имеют одинаковое значение:
1 Иванов Иван Иваныч
поэтому эти 2 записи объединяются в одну.

Чтобы выполнить обобщенное действие (агрегированную ф-цию) над сгруппированными данными, необходимо создать дополнительное поле в котором будет отображаться результат ф-ции. В наше случае - это поле "Кол-во книг", в отчете оно будет выводиться как отдельная колонка.

Мы указали нашему полю "Кол-во книг" Тип="Счетчик", это означает, что мы будем для каждой записи, которая объединяется выполнять какое-то арифметическое действие. В нашем случае, мы просто увеличиваем значение счетчика +1, т.е. каждая запись попавшая в отчет увеличивает счетчик для "объединенной строки" в отчете. Так же мы можем указать условие, при котором будет выполняться заданное действие (в данном отчете нам это не нужно, пример можно посмотреть в отчете "Поступило экземпляров за отчетный год (по типам литературы и документов)" и т.п.).

Таким образом, в данном отчете для каждой обобщенной записи мы посчитали количество вхождений в отчет.
03.02.2018 01:06
# FreeMind  Модератор  633 368 +0
Теперь добавим в отчет дополнительное поле, в котором будет отображаться минимальная (самая ранняя) дата возврата из всех книг имеющихся у читателя на руках.

8. На свободном месте панели с дополнительными полями жмем ПКМ, в появившемся контекстном меню выбираем "Добавить дополнительное поле".

В появившемся окне заполняем параметры доп.поля:
Название="Мин дата возврата"
Тип="Минимальное"

Нажимаем "ОК"

Появится новое окно "Редактирование действия", в нем:
в текстовое поле "Значение" пишем вручную текст "= Дата возврата" или просто дважды щелкаем на "Дата возврата" в нижнем поле для выбора значений и текст "= Дата возврата" будет установлен в поле "Значение" автоматически.

Нажимаем "ОК"

Окно "Редактирование действия" закрывается и мы видим в таблице информацию о новом созданном дополнительном поле:

Название колонки       Ф-ция       Условие       Действие
Мин дата возврата      Минимальное              = Дата возврата


Нажимаем подсвеченную желтым цветом кнопку "Сохранить" и зеленую кнопку "Сформировать результат отчёта >>", что бы увидеть, что на данный момент у нас получилось.

id (читателя)	ФИО	Кол-во книг	Мин дата возврата
1	Иванов Иван Иваныч	2	01.01.2017
2	Петров Петр Петрович	1	01.01.2022
3	Сидоров Сидор Сидорович	1	20.01.2018


03.02.2018 01:12
# FreeMind  Модератор  633 368 +0
Пояснения:

Тип="Минимальное" для доп.поля "Мин дата возврата" позволяет выбрать в качестве результата для всех сгруппированных данных значение, которое будет минимальным для указанного атрибута. В нашем случае мы выбрали минимальное значение для атрибута "Дата возврата" книги.
05.02.2018 12:01
# Rinoren  PREMIUM  70 444 +0
Великолепно! Без этой инструкции я бы не смог создать все это.
А программа допускает импорт настроек подобных отчетов? Например как сейчас это реализовано с фильтрами? Т.е. скачал файлик и у тебя новый вариант статистики.



05.02.2018 17:35
# FreeMind  Модератор  633 368 +0
Пока еще нет, но уже было вынесено на голосование.