0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
1

Расчет стажа работы

28.02.2017, 12:45. Показов 4645. Ответов 32
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Есть таблица job с полем start_year в который записывается год начала работы в компании. Необходимо вычислить стаж работы.

Delphi
1
2
3
4
5
6
7
with fdm.Query do
  begin
    close;
    sql.Clear;
    sql.Add('select today - start_year as staj from job')
  end;
finfo.label31.Caption := fdm.Query.fieldbyname('staj').AsString;
делаю так и в ответ получаю ошибку, что поле staj не найдено в наборе данных adoquery.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2017, 12:45
Ответы с готовыми решениями:

Расчет стажа
Помогите как сделать подсчет. Необходима следующая таблица. Столбцы: лет, месяцев, дней, всего в...

Расчет стажа - Не корректный
Здравствуйте и Всем Доброго дня! Тут у меня при заполнении БД скоропостижно вскочил вопрос, типа...

Расчет трудового стажа сотрудников
Всем доброго времени суток. Нужна помощь!!! Есть база расчета стажа сотрудников. В поле...

Расчет стажа для сотрудников
Помогите, пожалуйста рассчитать стаж в аксесс для сотрудников, у которых входит в стаж и служба в...

32
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
28.02.2017, 18:10 21
Author24 — интернет-сервис помощи студентам
Шаг 3.
SQL
1
SELECT DateDiff('yyyy',DATE(),start_year) AS staj FROM job WHERE id_sotr = 3
Должны получить 0
1
0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
28.02.2017, 18:25  [ТС] 22
Цитата Сообщение от YuryK Посмотреть сообщение
Шаг 3.
SELECT DateDiff('yyyy',Date(),start_year) AS staj FROM job WHERE id_sotr = 3
Должны получить 0

Выдает следующую ошибку

[Error] main.pas(77): ')' expected but identifier 'yyyy' found
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
28.02.2017, 18:32 23
Лучший ответ Сообщение было отмечено Mihter как решение

Решение

удваиваем кавычку '
Delphi
1
sql.Add('SELECT DateDiff(''yyyy'',Date(),start_year) AS staj FROM job WHERE id_sotr = 3');
1
0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
01.03.2017, 07:41  [ТС] 24
YuryK, простите мне мою глупость, только изучаю это дело все и таких нюансов еще не знаю.

Выполнил, вернуло 0

Добавлено через 13 часов 5 минут
YuryK, почему возвращает 0 ?

синтаксис же такой
SQL
1
DATEDIFF(datepart, startdate, enddate)
в запросе
SQL
1
SELECT DateDiff(''yyyy'',DATE(),start_year) AS staj FROM job WHERE id_sotr = 3
находится разница между датой в ячейке и системной?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.03.2017, 07:45 25
потому что между 26.02.2017 20:25:59 и сегодняшним днем 0 полных лет
1
0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
01.03.2017, 07:56  [ТС] 26
YuryK, спасибо огромное!
0
0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
03.03.2017, 07:56  [ТС] 27
YuryK, добрый день!

Скажите, пожалуйста, а чтобы рассчитать стаж всех сотрудников сразу и записать в столбец staj, необходимо просто убрать условие where? Если да, то мне выдает ошибку синтаксиса.
SQL
1
SELECT DateDiff(''yyyy'',start_year, DATE()) AS staj FROM job
это необходимо для того чтобы потом рассчитать среднний стаж, думаю сделать так
SQL
1
SELECT avg(staj) FROM job
Если ход мыслей неверный, прошу подсказать как сделать лучше.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
03.03.2017, 09:05 28
Цитата Сообщение от Mihter Посмотреть сообщение
Если да, то мне выдает ошибку синтаксиса.
это текст запроса или константа в
Delphi
1
sql.Add()
а то в первом случае сдвоенные кавычки не нужны

Цитата Сообщение от Mihter Посмотреть сообщение
и записать в столбец staj
т.е. о уже в таблице физически образовался?
тогда не SELECT нужен, а UPDATE

Цитата Сообщение от Mihter Посмотреть сообщение
чтобы потом рассчитать средний стаж
наверное можно и "сразу"
SQL
1
SELECT avg(DateDiff(...)) FROM job
1
0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
03.03.2017, 11:24  [ТС] 29
Цитата Сообщение от YuryK Посмотреть сообщение
это текст запроса или константа в
это константа.

Цитата Сообщение от YuryK Посмотреть сообщение
т.е. о уже в таблице физически образовался?
тогда не SELECT нужен, а UPDATE
нет этого столбца в базе, должен образоваться на момент расчета среднего стажа.

Цитата Сообщение от YuryK Посмотреть сообщение
наверное можно и "сразу"
попробовал так, как текст запроса через инспектор объектов.

SQL
1
SELECT avg(DateDiff('yyyy',start_year, DATE()) AS staj FROM job) FROM job;

пишет что ошибка синтаксисапропущен оператор
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
03.03.2017, 11:26 30
Цитата Сообщение от Mihter Посмотреть сообщение
Если да, то мне выдает ошибку синтаксиса.
тогда озвучь её, если сам интерпретировать не можешь
1
0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
03.03.2017, 11:34  [ТС] 31
сейчас попробовал внести текст запроса в инспекторе объектов ADOQuery.
SQL
1
SELECT avg(DateDiff('yyyy',start_year, DATE()) AS staj FROM job) FROM job;
в ответ получил
Ошибка синтаксиса (пропущен оператор) в выражении avg(DateDiff('yyyy',start_year, DATE()) AS staj FROM job).
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
03.03.2017, 11:45 32
Лучший ответ Сообщение было отмечено Mihter как решение

Решение

SQL
1
SELECT Avg(DateDiff('yyyy',[start_year],DATE())) AS AvgStaj FROM job;
1
0 / 0 / 1
Регистрация: 15.04.2015
Сообщений: 75
03.03.2017, 12:04  [ТС] 33
Спасибо большое.
0
03.03.2017, 12:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2017, 12:04
Помогаю со студенческими работами здесь

Расчет рабочего стажа в отдельной конфигурации
Здравствуйте. Помогите пожалуйста с созданием конфигурации. Я в 1С практически вообще ничего не...

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

Высчитывание стажа работы
1. Добрый вечер. В таблице добавил "Дату начала работы". Какую формулу надо ввести , чтобы...

Подсчет среднего стажа работы
Всем привет! Просьба помочь в решении такой задачи: Необходимо выбрать из справочника персонала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru