Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Расчет сроков поставки

Ответить
Настройки темы
Теория - Расчет сроков поставки

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: xls Поставки.xls
(34.5 Kb, 13 просмотров)
Задам вопрос здесь, т.к. теоретиков и практиков по логическому мышлению здесь больше всего

Стоит задача автоматизировать расчет сорванных сроков поставок товаров, точнее вывод разницы в сроках в днях. Для того, чтобы было понятней, прикладываю файлик в Excel.
Частично я задачу решил, но когда наткнулся на некоторые условия, зашел в тупик.

Поставки разбиты помесячно.
Итак, допустим по плану поставка должна быть 05.01.2013. В феврале поставок не намечалось.
Фактически в январе ничего не поставили, а в феврале поставили за январь. Получается, мы должны посчитать разницу в днях за январь + количество дней до поставки в феврале. (Я выделил красным на листе этот вариант)
А может быть так, что по плану поставка должна быть в феврале, а по факту еще вообще ничего не было. Надо тоже как то считать.

В Excel я сделал примерный набросок, которой работает корректно во всех случаях, кроме описанного мною первого случая.

Прошу совета, и речь не идет о какой то унифицированной формуле, а скорее о теоретической форме расчета, которую потом можно будет переложить на C#.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 11:17, 25-04-2013

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Delirium, посмотрел табличку. Первая мысль - у тебя не нормализована форма что ли. Ну т.е. не хватает еще одной колонки, чтобы получить полностью определенную запись в базе денных. Хм... поясню из далека.
Беру в пример 11ую строку. Спецификацией определены две поставки по ID 5001397 в январе и в марте. Как определить, какой приход товара (январский или мартовский)
был в апреле (ну перенесем дату с февраля для большей наглядности)? Ответ - никак. Можно конечно взять предположение, что поставки закрываются в порядке поступления, но сам понимаешь - в жизни это далеко не факт.
Подожди, но при работе с поставщиками и со складским учетом есть сквозные номера отчетности? + опять же поставка может быть не полной. Или это сейчас не рассматривается?
Т.е. ИМХО должны быть только две даты. Дата конкретного заказа, и дата его привоза. В базе данных (сейчас я больше в них) id, data_spec, data_fact.
Это основное. Дальше можно будет внести еще одно поле, например номер договора, в рамках которого осуществляется ежеквартальная отгрузка товара. Нууу и еще + одно для описания подробностей. Например частичной отгрузки.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 13:23, 25-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


lxa85, это лишь часть из базы, показанная для сравнения. На самом деле там порядка 200 колонок с десятками других дат . В данном случае надо отследить именно срыв поставки в разрезе таких дат. Поставка одна, т.е. после торгов, например, планируется поставить 24 единицы товара, по 2 каждый месяц. Да, бывает так, что в январе не поставят 2, а в феврале поставят сразу 4. Но январский срок все равно считается просроченным, а февральский нет(если конечно в феврале не поставили позже февральского срока). Это такая специфика расчетов в данном случае.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 15:51, 25-04-2013 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


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

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 19:03, 25-04-2013 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата lxa85:
Это должны быть различные строки базы данных. »
К сожалению, нет Одна строка - 1 позиция. Весь список (порядка 10 000 позиций) импортируется из жестокого xls файла, и потом с ним приходится работать.
Представление я бы сделал, если бы понял, какое.
Пока что идея примерно такая:
Код: Выделить весь код
Берем текущий месяц(скажем, апрель), ищем в спецификации ближайшую дату поставки от СЕГОДНЯ до начала года по месяцам
1) Если нет дат в спецификации, значит поставок не запланировано и отклонения нет.
2) Если нашли(допустим, март) в спецификации
   2.1) Смотрим факт за март, если есть - считаем разницу
   2.2) Если факта за март нет, обходим месяцы по убывающей и ищем ближайшую поставку. Если ничего нет, берем день текущего месяца и считаем разницу.
3) Ищем следующий, более ранний месяц, и далее по кругу.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:52, 26-04-2013 | #5

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
переменная "дата поставки" = NULL
для каждого месяца:
  если есть поставка по спецификации, то дата поставки = поставка по спецификации;
  если дата поставки не NULL и дата поставки < факт за месяц, то срыв = факт за месяц - дата поставки, дата поставки = NULL;
  иначе срыв = NULL

Отправлено: 22:44, 27-04-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Расчет сроков поставки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2007 - Расчет долей по кварталам Ученик волшебника Microsoft Office (Word, Excel, Outlook и т.д.) 3 18-06-2012 01:15
Расчет вычислительных мощностей lxa85 Хочу все знать 0 20-02-2012 10:53
Прочее - [решено] Расчет адресов в диапазоне timrx Сетевые технологии 8 30-05-2011 09:32
Delphi - [решено] Расчет RadioGroup volod3000 Программирование и базы данных 4 06-04-2011 21:19
Новые подробности относительно сроков выхода Windows Phone 7 OSZone News Новости и события Microsoft 4 05-08-2010 18:45




 
Переход