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

Условие на значение в таблице (Функции IIF и DateDiff)

17.01.2013, 22:28. Показов 5171. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые форумчане! Мне понадобилось в базу ввести условие на ввод данных для сотрудников. В таблице Сотрудники имеются поля ДатаРождения и Пол (Женский/Мужской).
Суть проблемы:
должна выводиться ошибка о некорректном вводе данных, если
вводят сотрудника - женщину, возраст которой не превышает 18 лет либо составляет 55 лет и старше или вводят сотрудника - мужчину, возраст которого меньше 18 лет либо составляет 65 лет и старше

В построитель ввожу: IIF((DateDiff("yyyy", ДатаРождения, Now))>65 and [Пол]="Мужской";(DateDiff("yyyy", ДатаРождения, Now))>55 and [Пол]="Женский");"Некорректный ввод!") Вылезает синтаксическая ошибка

Что я делаю не так??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2013, 22:28
Ответы с готовыми решениями:

Использование Функции IIf в таблице
Пытаюсь в таблице создать поле для определения возрастной группы, по вычисляемому полю "возраст"....

Двойное условие в конструкции iif
Всем доброго времени суток! Прошу помочь в одной конструкции. Суть проблемы: select ......

Как задать условие IIF, чтобы в одном из вариантов он выдавал null?
Здравствуйте! Не могу задать условие в запросе. Имею: 1 таблица - сотрудники 2 таблица -...

Работа функции DateDiff (на примере)
Коллеги, объясните пожалуйста почему в данному случае выражение возвращает 43254, а не 43255?...

7
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.01.2013, 23:09 2
iif((dateadd("yyyy"; 65, ДатаРождения)<date() and [Пол]="Мужской") or ([Пол]="Женский" and (dateadd("yyyy"; 55, ДатаРождения)<date() or dateadd("yyyy"; 18, ДатаРождения)>date())); "Некорректный ввод!"; "")
2
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 13
17.01.2013, 23:44  [ТС] 3
Ошибка "Задано значение для операции без оператора"
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.01.2013, 23:57 4
Цитата Сообщение от Tatiyana Посмотреть сообщение
Ошибка "Задано значение для операции без оператора"
Если выражение вводится в поле формы, то перед ним должен стоять знак равно "=". Кроме того, чтобы не было путаницы, поле ДатаРождения возьмите в прямые скобки - [ДатаРождения]

Если выражение записано в редакторе SQL, то вместо точек с запятой должны быть запятые
0
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 13
18.01.2013, 00:22  [ТС] 5
Ввожу условие в таблице в режиме конструктора в графу "Условие на значение". Попробовала сделать все, что Вы сказали, все равно ругается(
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
18.01.2013, 01:42 6
Цитата Сообщение от Tatiyana Посмотреть сообщение
Ввожу условие в таблице в режиме конструктора в графу "Условие на значение". Попробовала сделать все, что Вы сказали, все равно ругается(
Нет, это выражение не подходит для свойства ValidationRule (условие на значение). Его еще можно было бы с натяжкой применить при определении констрайнта вместе с Check, но боюсь для вас это будет слишком сложно. Да, к тому же я пока и не уверен, что это возможно в принципе. В частности, неясно что же вводится в поле - пол, дата рождения? Что-то еще?

Это выражение можно употребить в запросе как вычисляемое поле или на форме в свободном поле. Можно также проверять валидность данных в событии BeforeUpdate (до обновления) поля в форме. Задавать его как свойство таблицы невозможно.
0
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 36
18.01.2013, 13:11 7
mobile, вот оно что... Т.е. вообще никак через Условие на значение невозможно ввести это ограничение?

Если нельзя, то как это сделать через запрос?

Добавлено через 47 минут
Дошло) Можно ввести условие в свойства таблицы, но не в свойства поля
0
1047 / 531 / 66
Регистрация: 16.01.2013
Сообщений: 4,093
18.01.2013, 14:31 8
Цитата Сообщение от Tatiyana Посмотреть сообщение
Уважаемые форумчане! Мне понадобилось в базу ввести условие на ввод данных для сотрудников. В таблице Сотрудники имеются поля ДатаРождения и Пол (Женский/Мужской).
Суть проблемы:
должна выводиться ошибка о некорректном вводе данных, если
вводят сотрудника - женщину, возраст которой не превышает 18 лет либо составляет 55 лет и старше или вводят сотрудника - мужчину, возраст которого меньше 18 лет либо составляет 65 лет и старше

В построитель ввожу: IIF((DateDiff("yyyy", ДатаРождения, Now))>65 and [Пол]="Мужской";(DateDiff("yyyy", ДатаРождения, Now))>55 and [Пол]="Женский");"Некорректный ввод!") Вылезает синтаксическая ошибка

Что я делаю не так??
Попробуйте использовать Оператор «Between...And» http://office.microsoft.com/ru... 28853.aspx
или выложите бд. не все понимаю
0
18.01.2013, 14:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2013, 14:31
Помогаю со студенческими работами здесь

Последний запрос в курсовой c IIF, Не могу разобраться с IIF
Суть вопроса такова Фирма продает автомобили 3-х фирм chevrolet,daewoo,kia покупатель получает...

Использование функции Iif
Уважаемые форумчане) помогите пожалуйста разобраться) в базе данных у меня есть таблица...

Вычислить значение функции, заданной в таблице
Задание: Вычислить значение функции, заданной в таблице (вариант задается преподавателем)....

Вычислить значение функции,заданной в таблице.
Вычислить значение функции,заданной в таблице.Осуществить вывод значений аргумента и...


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

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

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