Список месяцев | |
---|---|
Артём Автор Сообщений: 55 Дата регистрации: 23.04.2001 |
Можно ли сформировать таблицу (точнее хочу SQL запрос), со всеми месяцами и годами с 2010 года (например).
то есть таблицу такого вида 2010 01 2010 02 ... 2010 12 2011 01 и так до текущего месяца. Я это делал просто создав таблицу dbf и заполнял нужными датами в цикле. Может, можно создать одной командой или двумя? Этот вопрос возник в связи с тем, что таблица с пропущенными месяцами не всегда наглядна. хочется, чтобы все месяцы присутствовали. Например, если в мае продаж не было, то я хочу увидеть ноль, а не пропущенный месяц май. Может, даже так. есть некоторый запрос в котором минимальная дата и максимальная. к примеру
Исправлено 1 раз(а). Последнее : Артём, 04.12.22 00:28 ![]() |
Re: Список месяцев | |
---|---|
PaulWist Сообщений: 14427 Дата регистрации: 01.04.2004 |
Серверный диалект какой?
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: Список месяцев | |
---|---|
Артём Автор Сообщений: 55 Дата регистрации: 23.04.2001 |
я на фокс про. надо, как и всегда, идею, мелочи додумаю.
![]() |
Re: Список месяцев | |
---|---|
PaulWist Сообщений: 14427 Дата регистрации: 01.04.2004 |
Создай на 100 лет вперёд. (таблица с годами-месяцами, с последовательно возрастающими числами - это нужные таблицы в БД, их надо всегда иметь ) ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: Список месяцев | |
---|---|
Владимир Максимов Сообщений: 14040 Откуда: Москва Дата регистрации: 02.09.2000 |
Паша хочет сказать, что нужно иметь таблицу-календарь. На 100 лет вперед - это 365,25*100 = 36 525 записей. Вполне посильное количество записей для DBF. Ну, если это кажется слишком много, то можно создать календарь на несколько лет вперед и каждый год добавлять дни очередного года
Таблица должна быть постоянная. Не для какой-то одной операции, а обычный постоянный справочник в базе данных. Точно такой же, как справочник поставщиков/клиентов или номенклатур. Очень много всего "завязано" на календарь. Поэтому всегда лучше иметь его "под рукой", а не создавать "на лету". Какие еще поля, кроме собственно даты - это зависит от приложения. Но обычно еще отдельно делают 3 поля: Год, Месяц, День. Соответственно, получить список месяцев за период - выборка с Distinct по этой таблице с .. по ... ![]() |
Re: Список месяцев | |
---|---|
PaulWist Сообщений: 14427 Дата регистрации: 01.04.2004 |
Добавлю к словам Владимира, почему "на лету" плохо, в этом случае нет индексов, не будет Rushmore оптимизации. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: Список месяцев | |
---|---|
AndyNigmatec Сообщений: 1381 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Я бы еще добавил (как минимум) в такую табл/справочник признак рабочий/выходной день.
![]() |
Re: Список месяцев | |
---|---|
of63 Сообщений: 24232 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Неочень приятное решение, что "давйте все ID, или все даты, или диапазон, перечислим". Язык (не фоксовый, общеупотребимый) этого не позвооляет, не имеет синтаксиса, которй разрабыб ы реализовали. Поэтому только подпрограммы, это неизбежно... (и было долго... ) ) ![]() |
Re: Список месяцев | |
---|---|
of63 Сообщений: 24232 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Это сложная прога (выходные дни в РФ, или в другой стране) Интересно, как ты бы ее решил? ![]() |
Re: Список месяцев | |
---|---|
Владимир Максимов Сообщений: 14040 Откуда: Москва Дата регистрации: 02.09.2000 |
Вот именно как прога - сложная. А как таблица - простая. Если стоит задача ведения нескольких календарей, то несколько таблиц и создается (разный график выходных и рабочих дней). Отдельная таблица под каждый вид/тип календаря. А вот написать прогу, которая бы по некоему алгоритму делала вычисления, например, выходных дней - невозможно. Это не формализуется. Под это дело обычно выходит постановлении правительства. Как ты эти постановления запрограммируешь? Только прямым перечислением дат. Та же таблица, только в виде набора констант. В общем, то же самое, но "в профиль" ![]() ![]() |
Re: Список месяцев | |
---|---|
of63 Сообщений: 24232 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Списки дней, выходных, выношу в список нештатных дат, в "INI" конкретное конторы/филиала. Куча способов вести (возможность заносить оператору) эти даты в "календаре" нештатных выходных дней, и куча способов заставить оператора это делать. Физически - это ЗПТ список дат, или табличка наращиваемая... Больше организационная пробла... Не сложная
> А вот написать прогу, которая бы по некоему алгоритму делала вычисления, например, выходных дней - невозможно. Это не формализуется. Под это дело обычно выходит постановлении правительства. Как ты эти постановления запрограммируешь? Только прямым перечислением дат. Та же таблица, только в виде набора констант. В общем, то же самое, но "в профиль" Это (например вышеуказаннми списками нештатных рабочих/ нерабочих дат) делается, естественно. В "1С" это же делается?, там не боги силят, нормальные писатели... И они это делают... Мтк это вообще не пробла... Вот, первая попавшаяся прога по поводу... и таких можно много написать. Исправлено 1 раз(а). Последнее : of63, 23.12.22 00:57 ![]() |
Re: Список месяцев | |
---|---|
Владимир Максимов Сообщений: 14040 Откуда: Москва Дата регистрации: 02.09.2000 |
И я о том же. О табличке... Ты что доказать-то хочешь? Что написать программный код - это проще/удобнее, чем расставить галки в таблице? Что при поиске даты вызвать функцию - это проще/удобнее, чем запрос к таблице? В чем предмет спора? ![]() |
Re: Список месяцев | |
---|---|
of63 Сообщений: 24232 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Функцией, эти даты непредсказуемых прогулов, сделать невозможно
Я их записываю тааблицей, в списке, формата ЗПТ-список, Тебе проще создать "таблицу" (записанную в неком файле старта, просто перечень дат, через запятую (например 'выхи: 2023, 01-11, ...) расставить галки в таблице (по одному байту на день - не растолчительно, по мне - некрасиво (хоть в биты превратить, но, тогда будет заморочнрЭнепорнятно...) Я для себя создал понятие - "ЗПТ-список" - список нечт, через запятую, в символьной строке выражается... Не рекламирую, таблица - тоже хороший вариант, но "таблица" все же, не переменная... У меня вот так это выглядело (выходные нештатные дни), умерло, потому что в законофигде это уже непонадобилось Настройки] ; ГГГГ: [Д]ДММ[ГГ][ГГ][.дней] Дополнительный Нерабочий День ДДММГГГГ = 2014: 101.8,105.4,905.3, 1206.2, 111.4, 2016: 2402, 2022: 0703, 0305, 1005 Пишу, обычно, всякую "универсальную" дрянь, типа Доб. Штатнее выходные дни прога знает. Вышестояший спич был о внештатных вых. днях. Он вносит проблы в счет ... всяких расчетов ЗП, вы в курсе, дб.... Исправлено 3 раз(а). Последнее : of63, 15.02.23 02:04 ![]() |
Re: Список месяцев | |
---|---|
AndyNigmatec Сообщений: 1381 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Я для себя не видел никакого смысла делить выхи на штатные/нештаные ... заполнил таблицу - и спокойно обычными запросами без разных "мегафункций" пользую.
Мало того, иногда начальству (хз зачем) требуется посчитать прогноз как если бы вот этот день был рабочим - и вуаля, поменял один признак - посчитал и поменял взад, а в случае с функцией это еще та задачка бы была ))) ![]() |
Re: Список месяцев | |
---|---|
Владимир Максимов Сообщений: 14040 Откуда: Москва Дата регистрации: 02.09.2000 |
Календарь - это не нечто "в неком файле старта". Это обычный справочник, каких много в любом приложении. Точно такой же, как справочник номенклатур или клиентов/поставщиков. Со своей спецификой, конечно, но именно что "справочник"
Смысл в том, что внести изменение в справочник может любой пользователь, у которого есть на это права. А вот изменить код - это только разработчик. Наверное, все-таки надо пояснить. Я категорически против "тайных" таблиц, про которые никто, кроме разработчика не в курсе. Если таблица создана в приложении, то пользователь должен иметь возможность увидеть ее содержимое. Ну, или результат ее использования, если это, например, таблица связи. Соответственно, если есть права, пользователь должен иметь возможность изменить содержимое этой таблицы. Вышло постановление о выходных днях - пользователь открыл форму календаря и завел соответствующие даты или расставил галки. Тут уж как именно этот справочник реализован. ![]() |
© 2000-2023 Fox Club  |