Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2010, 08:14   #1
Tadjik
 
Аватар для Tadjik
 
Регистрация: 27.08.2010
Сообщений: 9
Сообщение счетчик дней без выходных

Здравствуйте! к сожалению не шарю в дельфи... прошу помоч с задачкой... дана таблица с наименование и датой ввода в эксплаутацию оборудования. у каждого станка надо проводить какие то регламентные работы после допустим 100 часов работы, в сутки станок работает 5 часов. надо чтобы программа посчитала глядя на текущую дату когда надо будет произвести ТО, подсветив строчку с наименованием красным цветом. и выдав сообщение. если кто может то помогите, хотябы алгоритм решения с кодом как нибуть сам разберуь. искренне надеюсь на вашу помощь.
___________________________________ ___________________________________ _________
- Что ты пишешь? - спросили программиста.
- Сейчас запустим - узнаем! - ответил программист.
Tadjik вне форума Ответить с цитированием
Старый 27.08.2010, 08:29   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А в чем инфа хранится?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.08.2010, 08:31   #3
Tadjik
 
Аватар для Tadjik
 
Регистрация: 27.08.2010
Сообщений: 9
По умолчанию

в таблице, таблица сделана там же в дельфи
___________________________________ ___________________________________ _________
- Что ты пишешь? - спросили программиста.
- Сейчас запустим - узнаем! - ответил программист.
Tadjik вне форума Ответить с цитированием
Старый 27.08.2010, 08:36   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Я так понимаю Вы про StringGrid (черт, че-то сегодня телепатическая антена барахлит у меня под конец рабочей недели)?
Можно увидеть скрин таблицы?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.08.2010, 08:36   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) по хорошему эта задача решается с использованием вычислений дня недели (подозреваю, что субботу и воскресение станок простаивает) + подключение справочника, в котором забиты даты-исключения - выходные и праздничные дни и дни, на которые осуществлён перенос праздничных (например, рабочие субботы)

2) вычислить требуемую дату можно разными способами. Можно написать длинную и сложную формулу (я, например, с ходу не готов её состряпать).
Но, проще поступать так - просто считать дни, пропуская праздники:
Код:
// Берём исходную дату. 
ДатаРегламента := ТекущаяДата;
СуточнНаработка := 5;
Число_наработки_перед_регламентов := 100;
В цикле, пока Число_наработки_перед_регламентов > 0 делать
   Число_наработки_перед_регламентов := Число_наработки_перед_регламентов - СуточнНаработка;
   // Увеличиваем дату ДатаРегламента на один день (и продолжаем увеличивать,
   //    пока выпал праздничный./выходной день)
   repeat
      ДатаРегламента := ДатаРегламента + 1;
   until is_workday(ДатаРегламента);
конец цикла;
ShowMessage('Дата следующего регламента '+DateToStr(ДатаРегламента);
From artemavd: Сергей, Вы 1С программистом работаете? =)

Последний раз редактировалось artemavd; 27.08.2010 в 08:38.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.08.2010, 08:42   #6
Tadjik
 
Аватар для Tadjik
 
Регистрация: 27.08.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Я так понимаю Вы про StringGrid (черт, че-то сегодня телепатическая антена барахлит у меня под конец рабочей недели)?
Можно увидеть скрин таблицы?
вы правы выходные дни учитывать не надо, и с праздниками угадали! скрин к сожалению сейчас дать не могу, он на работе. после обеда постараюсь выложить
___________________________________ ___________________________________ _________
- Что ты пишешь? - спросили программиста.
- Сейчас запустим - узнаем! - ответил программист.
Tadjik вне форума Ответить с цитированием
Старый 27.08.2010, 08:44   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Я бы это писал не в Делфи а в SQL запросе
что-то типа
Код:
(Days(Now()-[датa ввода в эксплаутацию]) / 5) /100
Даст кол-во регламентных работ, который станок должен схавать начиная с даты эксплуатации. Просто стоит запоминать их кол-во и сравнивать с рассчитанным. Если рассчитанное больше чем запомненное - пора их проводить.

Примерная идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2010, 08:48   #8
Tadjik
 
Аватар для Tadjik
 
Регистрация: 27.08.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
2) вычислить требуемую дату можно разными способами. Можно написать длинную и сложную формулу (я, например, с ходу не готов её состряпать).
Но, проще поступать так - просто считать дни, пропуская праздники:
Код:
// Берём исходную дату. 
ДатаРегламента := ТекущаяДата;
СуточнНаработка := 5;
Число_наработки_перед_регламентов := 100;
В цикле, пока Число_наработки_перед_регламентов > 0 делать
   Число_наработки_перед_регламентов := Число_наработки_перед_регламентов - СуточнНаработка;
   // Увеличиваем дату ДатаРегламента на один день (и продолжаем увеличивать,
   //    пока выпал праздничный./выходной день)
   repeat
      ДатаРегламента := ДатаРегламента + 1;
   until is_workday(ДатаРегламента);
конец цикла;
ShowMessage('Дата следующего регламента '+DateToStr(ДатаРегламента);
прочитал, это чуток не то что нужно надо чтобы она чуток заранее кричала что скоро надо провести обслуживание, оборудования колосальное количество. требуется небольшая подготовка перед тем как провести ТО.
___________________________________ ___________________________________ _________
- Что ты пишешь? - спросили программиста.
- Сейчас запустим - узнаем! - ответил программист.
Tadjik вне форума Ответить с цитированием
Старый 27.08.2010, 08:52   #9
Tadjik
 
Аватар для Tadjik
 
Регистрация: 27.08.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Хм... Я бы это писал не в Делфи а в SQL запросе
что-то типа
Код:
(Days(Now()-[датa ввода в эксплаутацию]) / 5) /100
Даст кол-во регламентных работ, который станок должен схавать начиная с даты эксплуатации. Просто стоит запоминать их кол-во и сравнивать с рассчитанным. Если рассчитанное больше чем запомненное - пора их проводить.

Примерная идея ясна?
идея ясна, но я как то ниразу не сталкивался с SQL, шарю тока в паскале, дальше забил на учебу... вот ща вернулся с армии нашел работу программиста, сразу озадачили, типа теста на профпригодность, вот разбираюсь в авральном режиме.
P.S. если не составит труда обьясни пожалуйста на пальцах как мона это все реализовать

с дельфи чето облом..... таблицы сделаны в аксессе... поблемы остались те же.... ппц помогите пожалуйста
___________________________________ ___________________________________ _________
- Что ты пишешь? - спросили программиста.
- Сейчас запустим - узнаем! - ответил программист.

Последний раз редактировалось Stilet; 08.09.2010 в 08:53.
Tadjik вне форума Ответить с цитированием
Старый 08.09.2010, 08:41   #10
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

И вопросы остались те же.
В чем помочь? Т.е. в какой среде (на каком языке) надо сделать?
Подсказка по существу. В дельфи (если речь о дельфи) есть закладка ADO (dbGO в младших версиях), где расположены компоненты, через которые можно получить доступ к таблицам Access.
А алгоритм Serge_Bliznykov расписал. Его слегка подправить, чтобы "кричал заранее". Для программиста, который "шарит" в паскале это не составит труда.
Прик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет даты без учета выходных! Доктор Microsoft Office Excel 4 20.05.2010 17:56
Выделение цветом выходных в календаре kipish_lp JavaScript, Ajax 6 14.04.2010 11:36
как расчитать кол-во рабочих дней за"-" выходных??? ЦЕРЦЕЯ Microsoft Office Excel 5 30.11.2009 14:16
Строки,зачет после выходных, спасибо!!! = ) wef1k Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2008 17:25