0 / 0 / 1
Регистрация: 13.04.2014
Сообщений: 57
|
|
1 | |
Высчитывание стажа работы10.10.2016, 19:08. Показов 10111. Ответов 10
Метки нет (Все метки)
1. Добрый вечер. В таблице добавил "Дату начала работы". Какую формулу надо ввести , чтобы высчитывала стаж работы в днях в отчете? MS Access 2003.
2. http://storage2.static.itmages... 5dae8f.png Мне надо чтобы высвечивался в списке только Директор и Продавец. Как это сделать? Заранее благодарен.
0
|
10.10.2016, 19:08 | |
Ответы с готовыми решениями:
10
Подсчет среднего стажа работы Расчет стажа работы Подсчет стажа работы по прошествию даты В зависимости от введенного стажа работы установить уровень надбавки |
17535 / 7287 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
10.10.2016, 19:36 | 2 |
Выражение в поле отчета
DateDiff("d";[Дата начала работы]ate()) 2. Возможно в запросе - источнике строк нужно поставить DISTINCT и условие. Но это только предположение, неизвестна структура таблиц, процедура авторизации, ... .
1
|
10745 / 5585 / 1411
Регистрация: 05.10.2016
Сообщений: 15,796
|
|
10.10.2016, 19:50 | 3 |
Насколько помню формат данных "Дата-Время" это дробное число где целая часть это номер дня (начиная с 31.12.1899), а дробная это время.
Тогда разница в днях выглядит так: Дни работы = CLng(Date() -[дата начала работы]) Где Date() = функция возвращающая текущую системную дату, а CLng() = Приведение к целочисленному формату Long (Длинное целое) как то так. Добавлено через 5 минут То же хороший вариант! Но DateDiff уместнее употреблять когда используется период (Дата начала и конца) без текущей даты.
0
|
17535 / 7287 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
10.10.2016, 20:04 | 4 |
Чем уместнее? Чем плоха Date() в качестве окончания периода?
А вот знакомство ТС с функцией DateDiff, которая позволяет вычислять период в днях, месяцах, годах и т.п. действительно "уместнее".
1
|
10745 / 5585 / 1411
Регистрация: 05.10.2016
Сообщений: 15,796
|
||||||
10.10.2016, 20:32 | 5 | |||||
Кстати (BTW):
Кода место критично (БД на за десяток миллионов записей), а время нас не интересует, то дату можно запросто хранить в поле Long (Длинное Целое) , это может быть, допустим, дата обновления цены товара или нечто подобное. Добавлено через 2 минуты Ну вот... неужто обиделись? - Простите старика великодушно, не хотел ни в коем случае. Прошу прощения за нечаянное оскорбление. Виноват - Исправлюсь. Добавлено через 17 минут да знаю я эту функцию - вещь полезная Но работает в 5 раз медленнее моего варианта. На разовых операциях не критично - а на обработке больших обьёмов данных - она заставит себя подождать. Если интересно вот тест:
--------------------------------------------------------- Тест-1 (10*000*000 повт.) работал: 00:00:02 Тест-2 (10*000*000 повт.) работал: 00:00:11 --------------------------------------------------------- Комментарии, как говориться, излишни.
0
|
17535 / 7287 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
10.10.2016, 20:47 | 6 |
Целочисленная арифметика, естественно, быстрее DateDiff в этом частном случае. Но вопрос был не об этом.
0
|
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
10.10.2016, 21:23 | 8 |
Не думаю, что причина разницы скоростей в целочисленной арифметике. Можно Date() заменить на Now() и к вычитаемому добавить дробную часть, результат все равно будет не в пользу DateDiff. Причина как мне кажется в том, что DateDiff универсальная функция и для выбора исполняемого варианта требуется некий аналог Select Case. Что конечно же сильно замедляет расчеты. Даже если функция написана на ассемблере.
0
|
10745 / 5585 / 1411
Регистрация: 05.10.2016
Сообщений: 15,796
|
|
10.10.2016, 21:23 | 9 |
Тем - что она динамически меняться. Сегодня одно значение - завтра другое, послезавтра третье.
А DateDiff() - специально писалось для диапазона дат (есть дата начала и конца периода) Как то так.
0
|
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,813
|
|
10.10.2016, 21:43 | 10 |
ТС наверное и сам не рад, что из за его вопроса такая буча поднялась и спрятался от бомбардировки тяжелой артиллерии.
А то бы давно уже сказал, какой вариант ему понятнее и удобнее. Вопрос же был просто подсчитать количество отработанных дней, соответственно от текущей даты. Я тоже хотел с дифф предложить, но увидев, что уже предложили, не стал. К чему ломать копья, это по любому не тот случай, миллиардов записей в учебной БД просто не может быть. Добавлено через 10 минут Хи и и, если на то пошло, то ни кто не учел, сколько рабочих и выходных дней - праздники.
1
|
10745 / 5585 / 1411
Регистрация: 05.10.2016
Сообщений: 15,796
|
|
10.10.2016, 22:44 | 11 |
Да я и сам не понял чего ltv_1953 "завёлся".
И так и так правильно - по любому. Ну раз начался спор - я привёл доступные аргументы. Много знаний не бывает, и в споре рождается истина. Как то так. Добавлено через 27 минут Вечно меня подводит эта старая хорошая привычка - экономить на ресурсах системы, ну что бы результат (конечное приложение) меньше расходовало системных ресурсов. Пусть так и будет. Добавлено через 26 минут SmeRT59, Короче так: Можете использовать любой из предложенных вариантов. А наши "междусобойчики" - по боку. "Милые дерутся - только тешатся" Ваш вопрос бы не возник - зная вы элементарную мат часть. Весьма и настоятельно рекомендю изучить стандартные функции VBA + типы данных MS Acess - литературы = навалом! На сём всё. Успехов! (Спасибо за внимание)
0
|
10.10.2016, 22:44 | |
10.10.2016, 22:44 | |
Помогаю со студенческими работами здесь
11
Премии работникам фирмы выплачиваются в зависимости от стажа работы Разделить премию между рабочими в зависимости от стажа их работы на предприятии Вывести список сотрудников пенсионного возраста на сегодняшний день с указанием стажа работы Получить список сотрудников пенсионного возраста на сегодняшний день с указанием стажа работы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |