Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access день рождения

Отбор клиентов по дате рождения

У кого есть желание и время, помогите, пожалуйста.

Есть база в Access. Есть таблица клиентов, куда, в том числе, введены даты рождения. Мне нужна процедура, которая бы отбирала тех клиентов, у которых сегодня день рождения.
То есть должны совпадать месяц и число с текущей датой, а год может отличаться.

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

Заранее всем спасибо.

Vic
1) завтра тебе понадобится отбирать тех у кого день рождения завтра-послезавтра (особенно в пятницу. )
Если категорически охота своими руками делать, то делай сразу по-человечески, а именно:

2) Не лучше ли использовать готовые напоминалки?

Я как-то давно искала готовые напоминалки, мне не подошло ничего. Не помню почему. На счет двух дней я подумаю. не уверена, что в этом есть необходимость. Правда мне удобнее с прошедшим поздравлять.
Тогда надо писать
BETWEEN -2 AND 0 ?
Может тогда будут конкреные решения для учета выходных. Честно говоря, для меня дни рождения на несколько дней неудобны

Тогда надо писать

BETWEEN -2 AND 0 ?

ну сделай order by

Это был вопрос . Я просто не правильно сформулировала. Может у кого-то есть конктретные предложения по поводу выходных?

Может тогда будут конкреные решения для учета выходных.

Это был вопрос . Я просто не правильно сформулировала. Может у кого-то есть конктретные предложения по поводу выходных?

Boevik, поподробнее легко.

В понедельник приходишь на работу и выдается список клиентов, у которых был ДР в субботу, воскресенье и в понедельник. Но в идеале надо, чтобы за три дня выдавался список только в понедельник, а во все остальные дни только за текущий день. Поэтому способ «BETWEEN 0 AND 2» является возможным, но не самым подходящим для меня.

Akina, Я конечно понимаю, что сложностей особенно нет для тебя, но я потрачу на это кучу времени. Поэтому я и спрашиваю в этом форуме. Это быстрее .
Так что имейте снисхождение к новичкам.

И снова здравствуйте
От меня не так-то просто отделаться, так что напрягите мозги еще раз, пожалуйста. Может присоветуете что

Как можно реализовать идею, брошенную Akin’ей

а если были праздники?

Может надо в программе запоминать когда (в какой день) последний раз заходили в программу и выдавать все дни рождения между этими датами?

Я создаю поле где хранится дата последнего входа в БД. Как создать процедуру, или SQL запрос, который бы проверял, вчера ли был последний вход, и если нет, то выдавал бы данные за все последние дни.
У меня следующий SQL запрос для вывода сегодняшних ДР:

Буду признательна за идеи или готовые решения

Или я не понимаю вопроса?

Позволю себе дополнить немного мысль Akina

анологично и второй select.

Дополнила я запрос предложенным образом, на что мне было выдано следующее сообщение:

Может, будут предложения по упрощению выражения

Vic
Поясняю — Аксесс хочет, чтобы вместо

strSQL=» . WHERE (((Month([ДатаРожденияАгента]))=Month(Now())) . «
DoCMD.RunSQL

strTmp=str(Month(Now()))
strSQL=» . WHERE (((Month([ДатаРожденияАгента]))=» & strTmp & » . «
DoCMD.RunSQL

strSQL=» . WHERE (((Month([ДатаРожденияАгента]))=» & str(Month(Now())) & » . «
DoCMD.RunSQL

Select выглядит следующим образом:

SELECT [ФамилияАгента] & » » & [ИмяАгента] & » » & [ОтчествоАгента] AS ФИОагента, ДатаРожденияАгента, Пометки

WHERE DateSerial(Year(Now), Month(ДатаРожденияАгента), Day(ДатаРожденияАгента)) BETWEEN LastDatabaseAccessDate AND Now()

UNION SELECT [ФамилияКонтрагента] & » » & [ИмяКонтрагента] & » » & [ОтчествоКонтрагента] AS ФИОконтрагента, ДатаРожденияКонтрагента, Пометки

WHERE DateSerial(Year(Now), Month(ДатаРожденияКонтрагента), Day(ДатаРожденияКонтрагента)) BETWEEN LastDatabaseAccessDate AND Now();

Akina, сейчас попробую разобраться в том, что ты написал, а то до меня пока не очень доходит. Я все писала в запросе на SQL, VBA вообще не использовала, поэтому я пока не понимаю, как применть то, что ты написал.

Vic, LastDatabaseAccessDate это переменная в проге содержащая дату последнего обращения к базе. Её надо подставить в SQL.
Т.е. конечный SQL должен выглядеть примерно так

Читать еще:  Форма со списком access

Обрати внимание на формат даты и на решетки (#)

Boevik, честно говоря, я не поняла твой последний вопрос.
А что касается предложенноженного запроса, то у меня по нему тоже есть вопросы.

SELECT [ФамилияАгента] & » » & [ИмяАгента] & » » & [ОтчествоАгента] AS ФИОагента, ДатаРожденияАгента, Пометки

WHERE DateSerial(Year(Now), Month(ДатаРожденияАгента), Day(ДатаРожденияАгента)) BETWEEN #10/30/2004# AND Now()

Как я понимаю, DateSerial возвращает некоторую дату. В данном случае эта такая дата, у которой год текущий, а месяц и число совпадают с днем и месяцем рождения агента.
Кроме того, здесь еще устанавливается ограничение, что DateSerial BETWEEN #10/30/2004# AND Now().
Я не понимаю, где в этом запросе сопоставляется, что надо выбрать именно тех агентов, у которых число и месяц рождения = DateSerial.
В моем понимании в предложенном запросе чего-то не зватает:
Select — выводятся некоторые данные об агенте
From — откуда выводятся эти данные
Where — выводится некоторое число, которое само по себе зависит от ДатыРожденияАгента, но никак не влияет на то, что выводится SELECTом

Не знаю, на сколько понятно то, что я написала, но в общем это все к тому, что у меня не работает этот запрос

Урок 23
Формирование
сложных запросов к готовой базе данных

Практическое занятие

Приобретаемые умения и навыки:

— Формирование запросов с использованием логических операций.
— Создание вычисляемых полей.

Практическое задание №11
Тема: Условия выбора и сложные логические выражения

Задание 1 (однотабличная БД)

1. Открыть БД «Абитуриент.mdb»

Заготовка для практических работ по БД у авт. Семакина в формате для Access.mdb Base — Абитуриент.mdb

Открыть БД «Абитуриент.mdb»

Заготовка для практических работ по БД у авт. Семакина в формате для OO.org Base — Абитуриент.odb

Открыть БД «Абитуриент.odb»

2. Создать запрос для выбора фамилии, имени и школы для всех абитуриентов, окончивших школы 44 и 59.

3. Создать запрос для выбора всех абитуриентов, не учившихся на подготовительных курсах и получивших «двойку» на экзамене по математике или информатике (вывести все поля таблицы).

4. Создать запрос для выбора фамилии, даты рождения и всех оценок абитуриентов, получивших на экзаменах только «четвёрки» и «пятёрки».

5. Создать запрос для выбора фамилии и даты рождения юношей-абитуриентов, родившихся в 1990 году.

6. Создать запрос для выбора фамилии и всех оценок абитуриентов, набравших сумму баллов не менее 13.

Задание 2 (многотабличная БД)

2. Создать запрос для вывода на экран полей фамилия, факультет, название специальности для абитуриентов, поступающих на математический и физический факультеты и окончивших подготовительные курсы.

3. Создать запрос для вывода на экран фамилии, факультета и суммы баллов для абитуриентов, набравших в сумме более 12 баллов за три экзамена.

4. Создать запрос для вывода на экран фамилии, факультета, оценки за 1 экзамен, оценки за 2 экзамен, оценки за 3 экзамен для всех абитуриентов, у которых оценка за 3 экзамен выше среднего балла за все экзамены.

5. Создать запрос для вывода на экран фамилии, даты рождения, названия специальности и факультета для абитуриентов всех факультетов, кроме физического, родившихся в 1991 году.

Access день рождения

Войти

11.1.12 Создание запросов с помощью Построителя выражений

В верхнее тематическое оглавление
Тематическое оглавление (Учебно-методическое )

1мед УЧ(Практический) 11.1.12 Создание запросов с помощью Построителя выражений

Access XP
Тема 12 Создание запросов с помощью Построителя выражений

  • Создать новый запрос по таблице Пациенты, включив в него поля Фамилия и Пол.
  • Определить новое поле, в котором будет вычисляться возраст пациента. Для этого в свободную ячейку (третью по счету) строки Поле щелкнуть правой клавишей мыши, вызвав контекстное меню и выбрать в нем опцию Построитель. Откроется окно Построителя выражений. В верхнюю часть Построителя выражений, где моргает курсор, необходимо ввести выражение:
    Возраст: Year(Now()) – Year([Дата рождения])

    Элементы этого выражения обозначают:
    Возраст – название нового поля. Отделяется от остальной части выражения двоеточием;
    Now() – встроенная функция, которая возвращает текущую дату, аргументов не имеет, но пустые круглые скобки обязательны;
    Year(…) – встроенная функция, в качестве аргумента требует данные в формате даты, возвращает содержащийся в дате год.
    Year(Now()) – вложенные функции: функция Now() возвращает текущую дату, которая становится аргументом функции Year(…), последняя возвращает выделенный из даты текущий год. Например, если запрос выполняется 25 сентября 2006 года, то результатом выполнения вложенных функций будет число 2006.
    Year([Дата рождения]) – аргументом функции Year(…) является значение поля таблицы [Дата рождения] (название поля задается в квадратных скобках).
    Для этого в левой нижней ячейке двойным щелчком открыть папку Функции, и найти папку Встроенные функции, раскрыть. В средней ячейке показаны все типы встроенных функций, выбрать тип Дата и время или Все, затем в правой ячейке найти функцию Year и двойным щелчком по ней перенести ее в верхнюю ячейку. Затем нажать на знак «-» и еще раз двойной щелчок по функции Year. В верхней ячейке получено выражение: Year(«number») — Year(«number»), щелчком мыши в скобках первого Year(«number») выделить «number» и вместо его выбрать функцию Now() из третьей ячейки, вместо второго «number» выбрать из таблицы Пациенты поле Дата рождения. Получено выражение: Year(Now()) – Year([Дата рождения]). Нажать кнопку ОК, выполнить запрос. В запросе поле, в котором просчитан возраст имеет название Выражение1, чтобы это исправить, надо вернуться в конструктор запроса и в ячейке, где прописано выражение, аккуратно вместо Выражение1 напечатать Возраст.

  • Читать еще:  Const pointer c
  • Выполнить запрос и убедиться в правильности вычислений для каждой записи.
  • Сохранить запрос под именем Возраст пациентов.

  • Создать новый запрос по таблицам Пациенты и Госпитализация, включив в него поля: ФИО, № карты, Врач и Диагноз, для выбора пациентов, которые пролежали в стационаре менее 8 дней. Далее в свободную ячейку (пятую по счету) строки Поле щелкнуть правой клавишей мыши, вызвав контекстное меню и выбрать в нем опцию Построитель. Откроется окно Построителя выражений. В верхнюю часть Построителя выражений, где моргает курсор, необходимо по аналогии с предыдущим запросом ввести выражение:
    Day([Дата выписки])-Day([Дата поступления])
    Можно упростить: не использовать встроенную функцию Day(…), а сразу ввести [Дата выписки]- [Дата поступления]
  • Далее в конструкторе запроса в ячейке (пятой по счету) строки Условие отбора записать условие

    Создание простых и сложных запросов в СУБД Access

    Запросы являются основным средством просмотра, отбора, изменения и анализа информации, которая содержится в одной или нескольких таблицах базы данных.

    Существуют различные виды запросов, но наиболее распространенными являются запросы на выборку.

    1. Откройте базу данных «Фирма», созданную заранее.

    2. Выполните команду: вкладка ленты СозданиеМастер запросов – Простой запрос.

    3. В появившемся диалоговом окне (рисунок 3) укажите таблицу Сотрудники и выберите поля Фамилия, Имя, Телефон. Нажмите кнопку Далее.

    Рисунок 3. Создание простого запроса

    4. Введите имя запроса – Телефоны – и нажмите кнопку Готово. Перед вами появится запрос, в котором можно просмотреть телефоны сотрудников.

    5. Следующий запрос попробуйте создать с помощью Конструктора, для этого выполните команду: вкладка ленты Создание – Конструктор запросов. В диалоговом окне Добавление таблиц выберите таблицу Клиенты и щелкните на кнопке Добавить, а затем – на кнопке Закрыть.

    6. Чтобы перенести нужные поля в бланк запроса, необходимо по ним дважды щелкнуть левой кнопкой мыши (рисунок 4).

    Рисунок 4. Создание запроса в режиме Конструктора

    7. Чтобы отсортировать записи в поле Название компании в алфавитном порядке, необходимо в раскрывающемся списке строки Сортировка выбрать пункт по возрастанию. Сохраните запрос с именем «Адреса клиентов».

    8. Самостоятельно создайте запрос «Дни рождения», в котором можно будет просмотреть дни рождения сотрудников.

    9. Допустим, мы хотим узнать, у кого из сотрудников день рождения в текущем месяце, например в апреле. Для этого откройте запрос в режиме Конструктора. В строке Условие отбора для поля «Дата рождения» введите значение *.04.* . В данной записи * означают, что дата и год рождения могут быть любыми, а месяц 4-ым (т.е. апрель). После этого окно запроса должно выглядеть так, кА оно представлено на рисунке 5.

    Читать еще:  Security access code amazon что это

    Рисунок 5. Создание запроса

    10. Закройте Конструктор и просмотрите полученный результат. Если в запросе дни рождения нет ни одной записи, значит, в таблице сотрудники нет ни одного человека, родившегося в апреле. Добавьте в таблицу Сотрудники несколько человек, родившихся в апреле, и просмотрите, как изменится запрос. Запросы автоматически обновляются при каждом открытии.

    11. Если нам нужно узнать, кто из сотрудников родился в мае, то придется создавать новый запрос или изменить условие в существующем запросе Дни рождения. Данная процедура является неудобной и занимает много времени. Если приходится часто выполнять запрос, но каждый раз с новыми значениями условий используется запрос с параметром. При запуске такого запроса на экран выводится окно для ввода значения в качестве условия отбора. Чтобы создать запрос с параметром, пользователю необходимо ввести текст сообщения в строке Условие отбора бланка запроса. (рисунок 6).

    Рисунок 6. Создание запроса с параметром

    12. Запись Like[Введите дату] означает, что при открытии запроса появится диалоговое окно (рисунок 7) с текстом «Введите дату» и полем для ввода условия отбора. Если ввести условие *.04.*, то в запросе появится список сотрудников родившихся в апреле. Запустите запрос еще раз и введите значение *.05.*, посмотрите, как изменился запрос.

    Рисунок 7. Окно для ввода условия отбора

    13. Измените запрос «Телефоны» так, чтобы при его запуске выводилось диалоговое окно с сообщением «Введите фамилию». Поскольку в запросе нужно ввести конкретную фамилию, в условии отбора слово Like писать не надо.

    14. Измените запрос «Телефоны» так, чтобы при его запуске запрашивались не только фамилия, но и имя сотрудника.

    15. Самостоятельно создайте запрос «Выполненные заказы», содержащий следующие сведения: фамилия и имена сотрудника, название компании, с которой он работает, отметка о выполнении и сумма заказа. Данные запроса возьмите в нескольких таблицах. В условии отбора для логического поля Отметка о выполнении введите Да, чтобы в запросе отражались только выполненные заказы.

    16. Сделайте так, чтобы столбец Отметка о выполнении не выводился на экран.

    17. Создайте запрос Сумма заказа, в котором будут отображаться заказы на сумму более 50 000 руб.

    18. Измените запрос, чтобы сумма заказа была от 20 000 до 50 000 руб. для данных запросов в условии отбора можно использовать операторы сравнения >, =, и логические операторы And, Or, Not и другие.

    19. Иногда в запросах требуется произвести некоторые вычисления, например посчитать подоходный налог 13% для каждой сделки. Для этого откройте запрос Сумма заказа в режиме Конструктора. В пустом столбце бланка запроса щелкните правой кнопкой мыши на ячейке поле и в появившемся контекстном меню выберите команду Построить. Перед вами появится окно Построитель выражений (рисунок 8), который состоит из трех областей: поля выражения, кнопок операторов и элементов выражения. Сверху располагается поле выражения, в котором оно и создается. Вводимые в это поле элементы выбираются в двух других областях окна Построителя.

    20. В левом списке откройте папку Запросы и выделите запрос Сумма заказа. В среднем списке выделите поле Сумма и нажмите кнопку Вставить. Идентификатор этого поля появится в поле Построителя.

    21. Щелкните на кнопке * и введите 0,13 (рисунок 8). Таким образом мы посчитаем подоходный налог 13%.

    Рисунок 8. Построитель выражений

    22. Нажмите кнопку ОК, после чего в ячейке свойства Поле появится значение «Выражение1:[Сумма]*0,13».Замените Выражение1 на Налог и закройте Конструктор. Откройте запрос и посмотрите, что у вас получилось.

    23. Используя Построитель выражений, добавьте в запрос Сумма заказа поле Прибыль, в котором будет вычисляться доход от заказа (т.е. сумма минус налог).

    24. Создайте запрос Менеджеры, с помощью которого в таблице сотрудники найдите всех менеджеров фирмы.

  • Ссылка на основную публикацию
    Adblock
    detector