cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход

 
 
  ГлавнаяСправкаПоискВход  
 
Страниц: 1 2 
Послать Тему Печать
Поиск наибольшего и наименьшего значений (Прочитано 3 448 раз)
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Поиск наибольшего и наименьшего значений
06.07.2021 :: 13:04:48
 
Создал Банк Данных – Системный журнал.
При этом добавил 2 Поля:  Месяц и Год, которые по формуле заполнил из поля Дата. Это были соответственно СЖ8 и СЖ9.
При этом очень удобно выполнять отчеты за месяц и за период  по Запросам по проверке, скажем, Лиц, используя эти Поля.
Так вот, как в заголовке Статотчета  указать период выполнения отчета по Запросам. Другими словами, по какой формуле нужно локализовать наименьшие и наибольшие значения Месяцев (СЖ8 - цифра), найденных при выполнении Запроса, чтобы использовать  их в заголовке  Статотчета при помощи формулы.?  В отчете за Месяц проблем не возникает, в Статотчете даже вместо цифры Месяца (СЖ8) по формуле в Распределении указывается его название.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Поиск наибольшего и наименьшего значений
Ответ #1 - 06.07.2021 :: 13:43:19
 
Без создания дополнительных полей удобно пользоваться поиском в интервале дат ОТ СЖ01 4 ВИ 01.01.2021 30.06.2021. Более гибкие возможности.
А Вы сделали СЖ8 словарным полем?

Наибольшие и наименьшие значения удобно находить преобразовав значения дат в число (функция DATE) поместив в массив и используя функции MAXVAL  и MINVAL ( Массив ).

Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #2 - 06.07.2021 :: 15:50:45
 
Поле СЖ8 у меня не Словарное. Просто в распределении я прописал формулу соответствия значения поля СЖ8 (цифры) соответствующим Месяцам. Где у меря в Распределении указан Месяц, я прописал Формулу:
IF(СЖ8 = 1)THEN(@A := "Январь");
IF(СЖ8 = 2)THEN(@A := "Февраль");
IF(СЖ8 = 3)THEN(@A := "Март");
IF(СЖ8 = 4)THEN(@A := "Апрель");
IF(СЖ8 = 5)THEN(@A := "Май");
IF(СЖ8 = 6)THEN(@A := "Июнь");
IF(СЖ8 = 7)THEN(@A := "Июль");
IF(СЖ8 = 8)THEN(@A := "Август");
IF(СЖ8 = 9)THEN(@A := "Сентябрь");
IF(СЖ8 = 10)THEN(@A := "Октябрь");
IF(СЖ8 = 11)THEN(@A := "Ноябрь");
IF(СЖ8 = 12)THEN(@A := "Декабрь");
@RET := @A
Что касается функций MAXVAL  и MINVAL , то я с ними тоже поработал, но результата не получил.
Наверное сказалось 10-ти летнее отсутствие активной работы с Кроносом.
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #3 - 06.07.2021 :: 15:59:21
 
Тут я, правда, пытался найти эти числа из СЖ8, а не из СЖ4, поле которой и есть Дата.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Поиск наибольшего и наименьшего значений
Ответ #4 - 06.07.2021 :: 17:56:34
 
В общем то это легко сделать в самом запросе по образцу. Можно сделать поиск в интервале дат и присвоить значение глобальной переменной, которую потом выводить формулой в ячейке отчета. Можно интервал дат задавать формулой и передавать в поисковое значение.

Обсуждалось:
1
2
3
и в других местах.
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #5 - 06.07.2021 :: 19:14:08
 
Я сделал так, но все равно не получилось.
@A := "Количество Запросов с ";
@B := СЖ9;      /* Год   */
@C := СЖ8;      /* Месяц */
@I := 0;
A:;
@I := @I + 1;
IF((@C = @I))THEN(GOTO B;) ELSE(GOTO A);      /*Минимальное значение Месяца  */
B:;
@J := 13;
@D := СЖ8;
C:;
@J := @J - 1;
IF((@D = @J))THEN(GOTO D;) ELSE(GOTO C);      /*Максимальное значение Месяца  */
D:;
@RET := @A<<@C<<" по "<<@D<<"."<<@B

Буду думать дальше, если, конечно, это возможно из найденных в результате поиска значений "вырвать" максимальные и минимальные значения нужных полей.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Поиск наибольшего и наименьшего значений
Ответ #6 - 06.07.2021 :: 20:24:21
 
Эта формула употребляется в ячейке распределения?
С какими поисковыми условиями осуществляется запрос по образцу?
Непонятна цель этого запроса.
Может оказаться так, что один год принадлежит к одной группе месяцев, т.е. 2019 1, 2, 3, а другой к следующему кварталу, 2020 4,5,6. Минимальный месяц 1, а максимальный 6.
Если Вы хотите получить распределение запросов по месяцам, то лучше что-нибудь другое применить.
Насколько я понял, требуется выяснить в каких месяцах максимальное кол-во запросов, а в каких минимальное?
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #7 - 07.07.2021 :: 09:39:00
 
Эта формула предназначена для формирования  заголовка в файле Excel .
В начале я делаю поиск Минимального значения Месяца (@C), после того, как нашел перехожу на поиск Максимального значения (@D). Далее формирую заголовок Excel-а (последняя строка формулы).
Запрос по Месяцам, как правило, проводится по одному году, в нашем случае за 2021-й год.  Никто не будет указывать в запросе Года внутри интервала, скажем, с 2020 по 2021, поэтому проблема принадлежности Месяцев к разным Годам отпадает.
Распределение Количества Запросов для каждого Пользователя по Месяцам для конкретного Года работает корректно и отношения к этой формуле, естественно, не имеет.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Поиск наибольшего и наименьшего значений
Ответ #8 - 07.07.2021 :: 13:32:49
 
С какими поисковыми условиями осуществляется запрос по образцу?
Оттуда можно взять месяца, если они фигурируют в запросе.
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #9 - 08.07.2021 :: 15:19:36
 
Как и обычно:

Наверх
 

ZP.GIF (103 KB | 87 )
ZP.GIF
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #10 - 08.07.2021 :: 15:39:11
 
По большому счету, чтобы не "париться", можно заголовок таблицы Excel сделать "ручками". Это не принципиально. Тут важна сама идея: можно ли из найденных по запросу данных что-то (точнее, что нам нужно) найти?
Я уже создавал и глобальную переменную (массив данных), куда по признаку наличия знамения добавлял эти значения, а далее по поиску минимальных и максимальных значений в этом массиве создавал другие переменные (@X), которые и подставлял в последнюю формулу для создания заголовка Excel. Но все равно без результата.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Поиск наибольшего и наименьшего значений
Ответ #11 - 08.07.2021 :: 16:51:38
 
Т.е. по факту получается с января по месяц, предшествующий текущему.
Формула вывода заголовка
Код:
@MON:="январь"<<_fm<<"февраль"<<_fm<<"март"<<_fm<<"апрель"<<_fm<<"май"<<_fm<<"июнь"<<_fm<<"июль"<<_fm<<"август"<<_fm<<"сентябрь"<<_fm<<"октябрь"<<_fm<<"ноябрь"<<_fm<<"декабрь"
@CURM:=SUBSTR(@CURRENTDATE,4,2)
@CURY:=SUBSTR(@CURRENTDATE,7,4)
@RET:="Количество запросов за период январь - "<<(@MON(@CURM-1))<<" "<<@CURY 

Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #12 - 09.07.2021 :: 09:34:14
 
В моем случае данная формула формирования Заголовка таблицы Excel не заработала, да и не могла по определению (в работе с Демо Банком Primer  я задал Запрос на поиск Лиц за Июль и Август 2021г. – в заголовке Excel-я были указаны Месяцы – Январь и Июнь).
Показанный мною рисунок создания Сложного Библиотечного Запроса (кстати, туда также можно добавить и конкретного Пользователя) является универсальным:
1.      Можно манипулировать Месяцами или же одним Месяцем, изменяя значения Месяцев (1-12 за Год или  5-5 – за Май и т.д.).
2.      Вставив в Запрос и Пользователя (при проектировании Запроса), можно манипулировать и Пользователями (указав конкретного – выдает значения для конкретного за Период, удалив в Запросе Пользователя – выдает значения для ВСЕХ Пользователей и т.д.)
Так вот, вопрос мой состоял в том, что какую формулу можно использовать, чтобы программа могла «вытащить» нужные мне значения (для моего случая Месяцы – СЖ8) из числа уже отобранных за указанный период  (Месяцы и Год – СЖ8 и СЖ9)?
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 3 041
Санкт-Петербург
Re: Поиск наибольшего и наименьшего значений
Ответ #13 - 09.07.2021 :: 12:02:41
 
С самого начала и пытались прояснить, как выполняется запрос, какие его цели.
Решение по созданию полей месяц и год не очень хорошее. Запрос с ноября 2020 по февраль 2021 уже вызовет затруднения.
Цитата:
я задал Запрос на поиск Лиц за Июль и Август 2021г
Вы хотите, чтобы в заголовке было тоже Июль и Август, или если месяц еще не наступил, то его игнорировать и анализировать по фактическому наличию запросов? 0 - не выводить в заголовок.
Как уже упоминалось выше лучше использовать интервал СЖ4.
Наверх
 
 
IP записан
 
cocos
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 104
Re: Поиск наибольшего и наименьшего значений
Ответ #14 - 10.07.2021 :: 12:41:40
 
Наконец я «добил» эту Формулу, хотя правильнее сказать Формула «добила» меня.

@A := "Количество Запросов с ";
@B := СЖ9;      /* Год   */
@C := СЖ8;      /* Месяц */
IF((@C = "01"))THEN((@@D :=INSERTVAL(@@D,1,1)));
IF((@C = "02"))THEN((@@D :=INSERTVAL(@@D,1,2)));
IF((@C = "03"))THEN((@@D :=INSERTVAL(@@D,1,3)));
IF((@C = "04"))THEN((@@D :=INSERTVAL(@@D,1,4)));
IF((@C = "05"))THEN((@@D :=INSERTVAL(@@D,1,5)));
IF((@C = "06"))THEN((@@D :=INSERTVAL(@@D,1,6)));
IF((@C = "07"))THEN((@@D :=INSERTVAL(@@D,1,7)));
IF((@C = "08"))THEN((@@D :=INSERTVAL(@@D,1,8)));
IF((@C = "09"))THEN((@@D :=INSERTVAL(@@D,1,9)));
IF((@C = "10"))THEN((@@D :=INSERTVAL(@@D,1,10))Подмигивание
IF((@C = "11"))THEN((@@D :=INSERTVAL(@@D,1,11)));
IF((@C = "12"))THEN((@@D :=INSERTVAL(@@D,1,12)));
@E := MINVAL(@@D);
@F := MAXVAL(@@D);
@RET := @A<<@E<<" по "<<@F<<"."<<@B<<" г."

Запрос -  'Запрос с ноября 2020 по февраль 2021 – никто не собирается делать. Нет смысла.
Всегда  требуется делать  Запрос по Месяцам  для одного конкретного Года (для отчета).
Наверх
 
 
IP записан
 
Страниц: 1 2 
Послать Тему Печать