Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 573
от 16.07.2007, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 286, Экспертов: 40
В номере:Вопросов: 1, Ответов: 1


Вопрос № 94603: Подскажите как в Аксесе (VBA) посчитать выслугу человека. Надо вычесть две даты (Д1 и Д2) - начало и конец службы в армии. И вычесть две даты (Д3 и д4) - время приема на работу (Д3) и текущая дата (Д4). Это общее количество дней сложить и результат в...

Вопрос № 94.603
Подскажите как в Аксесе (VBA) посчитать выслугу человека. Надо вычесть две даты (Д1 и Д2) - начало и конец службы в армии. И вычесть две даты (Д3 и д4) - время приема на работу (Д3) и текущая дата (Д4). Это общее количество дней сложить и результат выдать в виде всего годов, месяцев и дней выслуги на текущую дату. Я правильно понимаю, что потом этот код надо повесить как источник на поле, в котором и будет отображаться общая выслуга.
Отправлен: 10.07.2007, 14:04
Вопрос задал: Alexander Babich (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Alexander Babich!
1) Создаем в базе Access таблицу DAT со следующими полями :
Kod long - код работника
D1 smalldatetime - дата начала службы в армии
D2 smalldatetime - дата окончания службы в армии
D3 smalldatetime - дата принятия на работу
D4 smalldatetime - дата увольнения ( если не уволен, то текущая дата )
2) Создаем запрос STAZ с кодом из приложения.

Показан стаж работы отдельно для двух периодов и суммарно. В общем стаже количество дней сравнивается с 30, если суммарное количество дней больше 30, то для дней стажа показывается остаток от деления на 30, а к месяцам прибавляется 1 или 2 месяца. Дополнительно количество месяцев получается остатком от деления на 12 суммы месяцев стажа с учетом переноса дополнительных месяцев из излишка дней. Количество лет подсчитывается с учетом излишков месяцев.
На самом деле подсчет нескольких периодов стажа немного некорректен, т.к. при сумме дней приходится убирать полный месяц, что при использовании деления на 30 может дать неверный результат, например период работы с 14.02.1963 по 12.02.1965 дает для отдельного стажа 1г11м30дн, а для периода работы с 14.02.1963 по 13.02.1965 - 2г0м0дн. Но при суммировании для обоих периодов будет учтено как два года стажа.
Как выход - сначала определять стаж для второго периода, прибавлять эти данные к дате увольнения первого периода и считать общий получившийся стаж. Но это значительно усложнит запрос. Лучше всего в базу добавить три поля общего стажа лет, месяцев и дней, считать их в программе и заносить в базу. Тем более, если человек еще работает, то каждый день у него общий стаж будет увеличиваться на 1 день. Это можно сделать в модуле Access или во встроенной процедуре MS SQL Server.
С уважением.

Приложение:

Ответ отправил: Филатов Евгений Геннадьевич (статус: 8-ой класс)
Ответ отправлен: 10.07.2007, 17:57
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.53 beta от 09.07.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное