Устанавливаем источник строк для поля со списком
После выбора таблицы строим запрос на основе этой таблицы (нажимаем кнопочку ...)
Этот запрос можно не сохранять
Изменяем несколько свойств поля.
- Число столбцов поставить 2
- Связанный столбец – 1 (он и так 1)
- Чтобы столбец с кодом клиента не отображался задать его ширину =0
Поле со списком готово.
Поля для ввода дат.
Ставим поле для даты
Изменяем ему имя на ДАТ1 | Выбираем формат – Краткий формат даты | Ставим значение по умолчанию текущую дату |
Копируем поле ДАТ1 и изменем в новом поле имя на ДАТ2
Можно поставить значение по умолчанию для даты 1 – текущую дату DATE() – 30 (тогда будет период – последние 30 дней)
Кнопка для показа отобранных записей
Ставим кнопку без мастера.
Изменяем имя и подпись на “ПОКАЗАТЬ”
Получилась вот такая форма
Изменение источника данных для формы.
Изменяем базовый запрос с учетом фильтра.
Открываем базовый запрос в конструкторе и сохраняем его под именем ПродажиКлиентов_F.
В условиях отбора для клиента, и дат строим выражения
Добавляем поля КодКлиента и два раза Дата
В строке ГРУППИРОВКА изменяем в этих полях слово ГРУППИРОВКА на УСЛОВИЕ и строим условия .
Для учета дополнительных условий (пустые поля фильтров) придется строить фильтр программно, проверяя наличие данных в полях формы и формировать условия отбора. Это процесс описан в приложении
Предположим, что в полях фильтра всегда будет выбран клиент и задан период и проверять это мы не будем. Тогда можно обойтись двумя кнопками. Одна кнопка будет выбирать данные из таблиц с учетом фильтра, а другая – просто показывать все записи для всех клиентов за все время существования базы.
Поставим в форме 2 кнопки, напишем на них “ФИЛЬТР” и “ВСЕ”. (Кнопки ставим без мастера.).
Изменим имя и подпись кнопки.
Изменяем кнопку ФИЛЬТР. Изменим ИМЯ кнопки на FiltrKlient.
Изменим источник записей для формы.
В свойствах кнопки ФИЛЬТР . На вкладке “СОБЫТИЯ” выбираем процедуру обработки событий “НАЖАТИЕ КНОПКИ”.
Нажмем на кнопочку с тремя точками и попадем в страшный редактор VBA. Там где окажется курсор напишем две строчки.
Private Sub FiltrKlient_Click()
‘Первая строчка задает в качестве источника записей для формы запрос с фильтрами по клиенту и за период.
Me.RecordSource = "ПродажиКлиентов_Ff"
‘Вторая строчка – обновляет данные в форме.
Me.Requery
End Sub
Аналогичную операцию проделаем с кнопкой для показа всех записей. Кнопку назовем ShowAll
В качестве источника записей в процедуре нажатия кнопки напишем запрос без фильтра (базовый запрос)
Me.RecordSource = "ПродажиКлиентов"
Me.Requery
Сохраним форму и посмотрим, что получилось, выбрав вид “форма”.