Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 5
1

Не отрабатывается функция DateDiff

25.01.2015, 12:27. Показов 1316. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Поручили переработать выборку, чтобы в отчете в поле стаж считались года. До этого в запросах стояло вычитание дат и даты получались (03.05.1928) переделал запрос
SQL
1
2
SELECT DISTINCTROW [Водители транспортных средств].Фамилия, [Водители транспортных средств].Имя, [Водители транспортных средств].Отчество, [Водители транспортных средств].[Код должности], [Водители транспортных средств].[Транспортное средство], [Тариф данные на водителей].[Разряд оплаты труда], оклады.оклад, [Тариф данные на водителей].[Объем работы], [Объем работы]*[оклады]![оклад] AS Выражение1, [B]DateDiff("yyyy",[Водители транспортных средств]![Дата приема на работу],[Дата]![Дата]) AS Вы1ажение6[/B], [Тариф данные на водителей].[Надбавка за классность], [Выражение1]*Nz([Надбавка за классность]) AS Выражение2, [Выражение1]+[Выражение2] AS Выражение5, [Тариф данные на водителей].[Надбавка за стаж], Nz([Надбавка за стаж])*[Выражение1] AS Выражение3, [Выражение1]+[Выражение2]+[Выражение3] AS Выражение4, [Тариф данные на водителей].Совместительство, [Тариф данные на водителей].Дополнительные
FROM Дата, оклады INNER JOIN ([Водители транспортных средств] INNER JOIN [Тариф данные на водителей] ON [Водители транспортных средств].Код = [Тариф данные на водителей].[код водителя]) ON оклады.разряд = [Тариф данные на водителей].[Разряд оплаты труда];
Если имя столбца оставляю так как есть (Вы1ажение6), то скрипт возвращает верные данные, если указываю Выражение6 - ставит даты дд.мм.1900
Выражение6 закреплено в отчете если я пытаюсь подствить значение столбца Вы1ажение6 - программа не видет его (требует ввести значения столбца)

Как я понимаю, что-то не так со скриптом, потому что делал голый запрос (добавлял таблицу Водителей и Дату) - там все работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2015, 12:27
Ответы с готовыми решениями:

Функция DateDiff
Мне нужно составить список авторов книги которых изданы в текущем году. Использую функцию...

Функция MIN(DATEDIFF)
Ребята, всех с прошедшим праздником и доброго вечера! Подскажите, пожалуйста, чайнику. ...

Функция отрисовки сетки в элементе picturebox не отрабатывается при загрузке формы (Form)
Доброго времени суток. Возникла следующая ситуация: есть функция отрисовки линий (например,...

Не отрабатывается while
По идее код должен генерить html таблицу. Но вместо этого сообщает об ошибке в 14 строке. <html>...

6
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
25.01.2015, 14:33 2
SQL
1
2
[Водители транспортных средств].[Дата приема на работу],
[Дата].[Дата]
ВИДИМО НАДО ЧЕРЕЗ ТОЧКУ
и у вас имя таблицы совпадает с именем поля в ней

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT DISTINCTROW
 W.Фамилия,
 W.Имя,
 W.Отчество,
 W.[Код должности],
 W.[Транспортное средство],
 T.[Разряд оплаты труда], оклады.оклад,
 T.[Объем работы],
 [Объем работы]*[оклады]![оклад] AS Выражение1,
 DateDiff("yyyy",w.[Дата приема на работу],[Дата].[Дата]) AS Вы1ажение6,
 T.[Надбавка за классность],
 [Выражение1]*Nz([Надбавка за классность]) AS Выражение2,
 [Выражение1]+[Выражение2] AS Выражение5,
 T.[Надбавка за стаж],
 Nz([Надбавка за стаж])*[Выражение1] AS Выражение3,
 [Выражение1]+[Выражение2]+[Выражение3] AS Выражение4,
 T.Совместительство,
 T.Дополнительные
FROM Дата, оклады INNER JOIN ([Водители транспортных средств] W
 INNER JOIN [Тариф данные на водителей] T
 ON W.Код = T.[код водителя])
 ON оклады.разряд = T.[Разряд оплаты труда];
1
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 5
25.01.2015, 22:49  [ТС] 3
Такая же ошибка и с этим запросом (ставит даты дд.мм.1900) Поле таблицы дата изменил, поставил псевдонимы под названия таблиц - результат тот же
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SELECT  
Mp.Фамилия, 
Mp.Имя, Mp.Отчество, 
DateDiff("yyyy",[Mp].[Дата найма],[Дата].[текущая_дата]) AS Выражение5, 
Tmp.категория, 
Tmp.отделение, 
Tmp.группа, 
Tmp.Должности, 
Tmp.разряд, 
Tmp.[Увеличение разрядаЗа руководство], 
Tmp.[За ученую степень], 
Tmp.[Почетное звание], 
Tmp.[итого разряд], 
оклады.оклад, 
Tmp.сельские, 
Nz([Tmp].[сельские])*оклады.[оклад] AS Выражение1, 
Tmp.ставка, [Выражение1]*[ставка] AS Выражение8, 
[оклад]*[ставка]+[Выражение1]*[ставка] AS Выражение2, 
Tmp.вредность, 
[Выражение2]*Nz([вредность]) AS Выражение3, 
[Выражение3]+[Выражение2] AS Выражение4, 
Tmp.стажные, 
Nz([Tmp].[стажные])*[Выражение2] AS Выражение6,
[Выражение2]+[Выражение3]+[Выражение6] AS Выражение7, 
Tmp.[Дополнительные сведения], 
Tmp.работа
FROM Дата, оклады INNER JOIN ([Медицинский персонал] AS Mp INNER JOIN Тариф_медперсонал AS Tmp ON Mp.[Код сотрудника] = Tmp.[Код медработника]) ON оклады.разряд = Tmp.[итого разряд];
0
369 / 88 / 8
Регистрация: 14.08.2012
Сообщений: 248
25.01.2015, 23:13 4
Предположу, что поле в отчете в котором записан стаж в годах из Выражение5 (поле запроса с DateDiff) отформатировано как датное. Тогда разумеется когда стаж=1, будет 1900 год. Мир Микрософта начинается с 31 декабря 1899 года и 1 это уже первое января 1900 года.
Попробуйте убрать формат с этого поля
1
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 5
26.01.2015, 13:42  [ТС] 5
В отчет тянется результат запроса из столбца Выражение5 - сам результат запроса уже выдает такой бред. Настроить данные в столбце результата запроса - возможно ли?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
26.01.2015, 14:31 6
Цитата Сообщение от NickDcrb Посмотреть сообщение
Настроить данные в столбце результата запроса - возможно ли?
Да, можно. Открываете запрос в конструкторе, становитесь на нужное поле. Открываете свойства-вкладка Общие-Формат поля. Присоединюсь к мнению odbcsql, что виной всему формат. В запросе ли, в отчете, но формат.
1
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 5
27.01.2015, 12:45  [ТС] 7
Всем спасибо действительно настроил формат ячейки в запросе (стоял краткий формат даты поставил на основной) - скрипт отработал
0
27.01.2015, 12:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2015, 12:45
Помогаю со студенческими работами здесь

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

не отрабатывается нажатие кнопки
Привет не отрабатывается нажатие кнопки, пробовал еще ставить на onclick тогда код выполняется...

Не отрабатывается задание по cron
Стоит FreePBX (CentOS) скрипт в кроне выглядит вот так: #!/bin/bash i=$(ps ax | grep -c...

Не полностью отрабатывается скрипт
Всем добрый день! Ситуация следующая, есть простой скрипт, который запускает bat от имени...


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

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