Форум компании Кронос-Информ | |
http://www.cronos.ru/cgi-bin/YaBB2/YaBB.cgi
Конференции для пользователей >> CronosPRO: формулы >> Поиск наибольшего и наименьшего значений http://www.cronos.ru/cgi-bin/YaBB2/YaBB.cgi?num=1625562288 Сообщение написано cocos в 06.07.2021 :: 13:04:48 |
Заголовок: Поиск наибольшего и наименьшего значений Создано cocos в 06.07.2021 :: 13:04:48
Создал Банк Данных – Системный журнал.
При этом добавил 2 Поля: Месяц и Год, которые по формуле заполнил из поля Дата. Это были соответственно СЖ8 и СЖ9. При этом очень удобно выполнять отчеты за месяц и за период по Запросам по проверке, скажем, Лиц, используя эти Поля. Так вот, как в заголовке Статотчета указать период выполнения отчета по Запросам. Другими словами, по какой формуле нужно локализовать наименьшие и наибольшие значения Месяцев (СЖ8 - цифра), найденных при выполнении Запроса, чтобы использовать их в заголовке Статотчета при помощи формулы.? В отчете за Месяц проблем не возникает, в Статотчете даже вместо цифры Месяца (СЖ8) по формуле в Распределении указывается его название. |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 06.07.2021 :: 13:43:19
Без создания дополнительных полей удобно пользоваться поиском в интервале дат ОТ СЖ01 4 ВИ 01.01.2021 30.06.2021. Более гибкие возможности.
А Вы сделали СЖ8 словарным полем? Наибольшие и наименьшие значения удобно находить преобразовав значения дат в число (функция DATE) поместив в массив и используя функции MAXVAL и MINVAL ( Массив ). |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 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-ти летнее отсутствие активной работы с Кроносом. |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 06.07.2021 :: 15:59:21
Тут я, правда, пытался найти эти числа из СЖ8, а не из СЖ4, поле которой и есть Дата.
|
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 06.07.2021 :: 17:56:34 |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 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 Буду думать дальше, если, конечно, это возможно из найденных в результате поиска значений "вырвать" максимальные и минимальные значения нужных полей. |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 06.07.2021 :: 20:24:21
Эта формула употребляется в ячейке распределения?
С какими поисковыми условиями осуществляется запрос по образцу? Непонятна цель этого запроса. Может оказаться так, что один год принадлежит к одной группе месяцев, т.е. 2019 1, 2, 3, а другой к следующему кварталу, 2020 4,5,6. Минимальный месяц 1, а максимальный 6. Если Вы хотите получить распределение запросов по месяцам, то лучше что-нибудь другое применить. Насколько я понял, требуется выяснить в каких месяцах максимальное кол-во запросов, а в каких минимальное? |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 07.07.2021 :: 09:39:00
Эта формула предназначена для формирования заголовка в файле Excel .
В начале я делаю поиск Минимального значения Месяца (@C), после того, как нашел перехожу на поиск Максимального значения (@D). Далее формирую заголовок Excel-а (последняя строка формулы). Запрос по Месяцам, как правило, проводится по одному году, в нашем случае за 2021-й год. Никто не будет указывать в запросе Года внутри интервала, скажем, с 2020 по 2021, поэтому проблема принадлежности Месяцев к разным Годам отпадает. Распределение Количества Запросов для каждого Пользователя по Месяцам для конкретного Года работает корректно и отношения к этой формуле, естественно, не имеет. |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 07.07.2021 :: 13:32:49
С какими поисковыми условиями осуществляется запрос по образцу?
Оттуда можно взять месяца, если они фигурируют в запросе. |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 08.07.2021 :: 15:19:36
Как и обычно:
![]() |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 08.07.2021 :: 15:39:11
По большому счету, чтобы не "париться", можно заголовок таблицы Excel сделать "ручками". Это не принципиально. Тут важна сама идея: можно ли из найденных по запросу данных что-то (точнее, что нам нужно) найти?
Я уже создавал и глобальную переменную (массив данных), куда по признаку наличия знамения добавлял эти значения, а далее по поиску минимальных и максимальных значений в этом массиве создавал другие переменные (@X), которые и подставлял в последнюю формулу для создания заголовка Excel. Но все равно без результата. |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 08.07.2021 :: 16:51:38
Т.е. по факту получается с января по месяц, предшествующий текущему.
Формула вывода заголовка [code]@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[/code] |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 09.07.2021 :: 09:34:14
В моем случае данная формула формирования Заголовка таблицы Excel не заработала, да и не могла по определению (в работе с Демо Банком Primer я задал Запрос на поиск Лиц за Июль и Август 2021г. – в заголовке Excel-я были указаны Месяцы – Январь и Июнь).
Показанный мною рисунок создания Сложного Библиотечного Запроса (кстати, туда также можно добавить и конкретного Пользователя) является универсальным: 1. Можно манипулировать Месяцами или же одним Месяцем, изменяя значения Месяцев (1-12 за Год или 5-5 – за Май и т.д.). 2. Вставив в Запрос и Пользователя (при проектировании Запроса), можно манипулировать и Пользователями (указав конкретного – выдает значения для конкретного за Период, удалив в Запросе Пользователя – выдает значения для ВСЕХ Пользователей и т.д.) Так вот, вопрос мой состоял в том, что какую формулу можно использовать, чтобы программа могла «вытащить» нужные мне значения (для моего случая Месяцы – СЖ8) из числа уже отобранных за указанный период (Месяцы и Год – СЖ8 и СЖ9)? |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 09.07.2021 :: 12:02:41
С самого начала и пытались прояснить, как выполняется запрос, какие его цели.
Решение по созданию полей месяц и год не очень хорошее. Запрос с ноября 2020 по февраль 2021 уже вызовет затруднения. Цитировать:
Как уже упоминалось выше лучше использовать интервал СЖ4. |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 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 – никто не собирается делать. Нет смысла. Всегда требуется делать Запрос по Месяцам для одного конкретного Года (для отчета). |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 10.07.2021 :: 12:44:15
При вводе произошла маленькая ошибочка:
@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<<" г." |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 10.07.2021 :: 12:45:58
При вводе произошла ошибка в написании.
@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<<" г." |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано cocos в 10.07.2021 :: 12:50:16
Тут при вводе произошла ошибка в написании.
@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<<" г." |
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 10.07.2021 :: 13:04:17
А как будет с апреля по апрель?
|
Заголовок: Re: Поиск наибольшего и наименьшего значений Создано Zuluss в 10.07.2021 :: 13:18:33
А разве не получится заменить блок кода
Code (]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)));[/code):
|
Форум компании Кронос-Информ » Powered by YaBB 2.5.2! YaBB © 2000-2009. Все права защищены. Localization by mySOPROMAT.ru |