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

 
 
  ГлавнаяСправкаПоискВходРегистрация  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Запрос по образцу+статистический отчет (Прочитано 270 раз)
Abdul
Начинающий пользователь
*
Вне Форума



Сообщений: 6
Запрос по образцу+статистический отчет
08.06.2020 :: 10:53:44
 
Здравствуйте!

Имеем таблицу "Поставки товаров". Поля: поставщик, дата поставки товара.
Предыдущий разработчик поле "поставщик" сделал текстовым, не словарь (структуру не могу менять, т.к. филиал отправляет данные в центральный офис).

Создал запрос по образцу для вывода всех поставок (при выполнении запрашивается временной интервал), данные выводятся в Excel через созданный статистический отчет.

Форма вывода в Excel:
   Поставщик  Количество поставок
   Орион         2
   Сириус        1

Все работает верно, но не могу вывести наименования поставщиков, которые в этом периоде не осуществляли поставок (в более широком периоде эти поставщики работали), т.е. желаемая форма вывода в Excel следующего вида:
   Поставщик  Количество поставок
   Аметис        0
   Гранит        0
   Орион         2
   Сириус        1
   Ториус        0

Так хотелось бы узнать, имеется ли функции:
1) чтобы в формулах получить дату конца месяца, н.-р: имею дату 01.01.2020 (или 010120, 01012020) получить на выходе 31.01.2020.
2) из полной даты выбрать месяц прописью (01.01.2020 --> январь)

Заранее спасибо
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


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

Сообщений: 2 741
Санкт-Петербург
Re: Запрос по образцу+статистический отчет
Ответ #1 - 08.06.2020 :: 17:23:25
 
Осмелюсь предположить, что у Вас в самом запросе ограничены поставщики условием наличия поставки. Поставок нет - они и не отбираются.
Наверх
 
 
IP записан
 
Abdul
Начинающий пользователь
*
Вне Форума



Сообщений: 6
Re: Запрос по образцу+статистический отчет
Ответ #2 - 09.06.2020 :: 06:02:54
 
Да, оно в принципе так и выходит.

Поля: поставщик, дата поставки, товар.

Мне надо узнать, сколько поставок конкретного товара сделал каждый поставщик в определенный интервал времени.

Соответственно в условие поиска мы добавляем наименование товара (н.-р. "рыба") и временной интервал (н.-р. "01.01.2020-31.01.2020").

Верно вы говорите, если поставщик в данный интервал рыбу не поставлял, то запрос и не выдаст такого поставщика на выходе.
А требуется чтобы выдал и поставил ему количество "0". (Может не с той стороны я подошел к решению данного вопроса? Может иначе стоит задать запрос?)

А в части вопроса, связанного с функциями для работы с датами не подскажете? Поиск по документации, форуму и сети Интернет результатов не дал.
Наверх
 
 
IP записан
 
basilura
Опытный пользователь
***
Вне Форума



Сообщений: 68
Re: Запрос по образцу+статистический отчет
Ответ #3 - 09.06.2020 :: 13:36:42
 
может, так 'ОТ ББ01 3 РВ ??.'..m..'.'..y  ?
Конечно, с поправкой на язык формул, а не Lua.
Наверх
 
basilura 148147668  
IP записан
 
Zuluss
Бета-тестер
Вне Форума


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

Сообщений: 2 741
Санкт-Петербург
Re: Запрос по образцу+статистический отчет
Ответ #4 - 09.06.2020 :: 16:25:46
 
Цитата:
1) чтобы в формулах получить дату конца месяца, н.-р: имею дату 01.01.2020 (или 010120, 01012020) получить на выходе 31.01.2020.
Нужно создать массив из 12-ти значений с конечными днями месяцев. Для февраля
сначала нужно узнать високосный год или нет. Потом из массива произвести выборку.

Цитата:
2) из полной даты выбрать месяц прописью (01.01.2020 --> январь)
Здесь тоже нужно создать массив месяцев и из него сделать выборку.
Все решаемо.
Номер месяца выделяется функцией SUBSTR.
Наверх
 
 
IP записан
 
Abdul
Начинающий пользователь
*
Вне Форума



Сообщений: 6
Re: Запрос по образцу+статистический отчет
Ответ #5 - 15.06.2020 :: 13:09:30
 
Конец месяца получил в условии запроса следующим образом (конечно можно было бы сделать намного красивее, но мои знания Кроноса ограничены Улыбка. Также с високосным годом не стал усложнять алгоритм, на наш век хватит и такого):

Код:
[size=10]//Возвращаем дату в формате «ДД.ММ.ГГГГ»
@d:=checkdate(@@d1);
IF (@d=0) THEN GOTO END;

//Получаем номер месяца
@m:=SUBSTR(@d,4,2);

IF (@m=01) THEN (@ret:=ADDAGE(@d, "30.00.0000"));

IF (@m=02) THEN
(
	@y:=SUBSTR(@d,7,4); //получаем год
	IF (@y%4)=0 THEN (@ret:=ADDAGE(@d, "28.00.0000"))
					ELSE (@ret:=ADDAGE(@d, "27.00.0000"));
)

IF (@m=03) THEN (@ret:=ADDAGE(@d, "30.00.0000"));
IF (@m=04) THEN (@ret:=ADDAGE(@d, "29.00.0000"));
IF (@m=05) THEN (@ret:=ADDAGE(@d, "30.00.0000"));
IF (@m=06) THEN (@ret:=ADDAGE(@d, "29.00.0000"));
IF (@m=07) THEN (@ret:=ADDAGE(@d, "30.00.0000"));
IF (@m=08) THEN (@ret:=ADDAGE(@d, "30.00.0000"));
IF (@m=09) THEN (@ret:=ADDAGE(@d, "29.00.0000"));
IF (@m=10) THEN (@ret:=ADDAGE(@d, "30.00.0000"));
IF (@m=11) THEN (@ret:=ADDAGE[size=11][/size](@d, "29.00.0000"));
IF (@m=12) THEN (@ret:=ADDAGE(@d, "30.00.0000"));


END:[/size] 




Номер месяца в название перевел в формулах, которые запускаются перед выполнением статистики. Выполнить все разом в едином коде не вышло, стат отчет не видел созданную дополнительную переменную.


Код:
//Возвращаем дату в формате «ДД.ММ.ГГГГ»
@d:=checkdate(@@d1);
IF (@d=0) THEN GOTO END;

//Получаем номер месяца
@m:=SUBSTR(@d,4,2);

IF (@m=01) THEN (@@d3:="Январь");
IF (@m=02) THEN (@@d3:="Февраль");
IF (@m=03) THEN (@@d3:="Март");
IF (@m=04) THEN (@@d3:="Апрель");
IF (@m=05) THEN (@@d3:="Май");
IF (@m=06) THEN (@@d3:="Июнь");
IF (@m=07) THEN (@@d3:="Июль");
IF (@m=08) THEN (@@d3:="Август");
IF (@m=09) THEN (@@d3:="Сентябрь");
IF (@m=10) THEN (@@d3:="Октябрь");
IF (@m=11) THEN (@@d3:="Ноябрь");
IF (@m=12) THEN (@@d3:="Декабрь");


END:

@ret := 0 



По поводу вывода полного списка поставщиков с нулями, отобрал запросом по образцу все поставки за год.
А по столбцам внутри статистического отчета задал условия выбора по месяцам. По итогу получил именно то, что надо.
Наверх
 
 
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать